当我编辑一个页面并让它长时间打开时,我会得到一个错误:“对不起!由于会话数据丢失,我们无法处理您的编辑。请再试一次。如果它仍然无法工作,请尝试退出并登录”在试图保存该页时“。
我想这跟会议有关吧?如果是这样,我如何才能增加最大会话时间?我已经尝试了session.gc_maxlifetime in php.ini (是的,我重新启动了php.ini),但这没有什么区别(这意味着我尝试了30秒,但编辑了几分钟后仍然可以保存页面)。还是必须使用MW配置设置?
发布于 2016-02-15 08:36:06
如果启用了$wgSessionsInObjectCache,则增加$wgObjectCacheSessionExpiry。否则,会话将由PHP保存,您应该按照其他注释的建议更改相关配置。
发布于 2017-06-10 15:24:49
我刚刚讨论了这个问题,下面是我解决这个问题的原因。
希望这能解决你的问题。
发布于 2021-05-27 20:12:31
在我的例子中,$wgMainCacheType更改为“CACHE_ACCEL”,以便在php服务器本身中启用apcu和opcache。在默认情况下,我将$wgSessionCacheType排除在配置文件之外,默认情况下是'CACHE_ANYTHING‘。在此配置中,令牌存储在php "server“APCu缓存中。
## Shared memory settings
$wgMainCacheType = CACHE_ACCEL;这导致在APCu清除其状态时,“实时”在役会话令牌会很快被清除,这更符合性能要求,并且具有相当的动态性。
因此,我会得到“对不起!由于会话数据丢失,我们无法处理您的编辑。”非常迅速和不一致,比如30秒,1-2分钟,甚至5分钟。这真让人讨厌。
MediaWiki中的页面编辑要求完成与之匹配的“活动令牌”类型。通常情况下,它只是不断地再生,如果丢失,除了提交编辑。作为一种安全措施,我认为这是为了防止已经注销的人的意外老化。
正在发生的事情是浏览器很好,但是APCu中的活动令牌缓存对象正在被清除,因为还没有足够快地使用,因为我已经停止编辑.,而服务器端在submit上没有匹配的令牌。
我需要补充的是:
$wgSessionCacheType = CACHE_DB;这将导致会话安全令牌根据MediaWiki规则(而不是动态对象缓存规则)正确地持久化。在这里解释:https://www.mediawiki.org/wiki/Manual:$wgSessionCacheType
为了进行正确的操作,必须将其设置为持久缓存,如果有多个服务器可能为单个客户端的请求提供服务,则缓存必须由所有这些服务器共享。 如果将$wgMainCacheType设置为CACHE_ACCEL,并将其保留在默认的CACHE_ANYTHING中,则所使用的缓存可能无法满足这些要求。 解决方案是将其设置为适当的缓存,如CACHE_DB。
在这里:https://www.mediawiki.org/wiki/Manual:$wgMainCacheType
由于PHP1.27,MediaWiki会话存储在缓存中,这取决于此设置的变量,除非被$wgSessionCacheType覆盖。如果CACHE_ACCEL配置错误,这可能会导致使用apcu时出现问题(请参阅任务T147161)。CACHE_ACCEL只支持APCu或WinCache,因为MediaWiki 1.31。
https://stackoverflow.com/questions/35178393
复制相似问题