Mediawiki:在wiki farm / family

时间:2016-07-06 09:39:25

标签: php mediawiki wiki

我已经建立了一个Wiki系列,其中包含少数具有(并且预计会继续)低到中等流量的Wiki。

当您运行单个MediaWiki时,它会在每个页面请求上运行一个作业,这对于保持链接和类别是最新的很有帮助,但是我无法让这个行为适用于wiki系列。

我有一个带有分支localSettings的wiki设置(取决于SERVER_NAME)并且尽管搜索(并且在Mediawiki上询问)发现没有办法保持这种工作行为,而是我让工作排队,可能是因为维护脚本是自动运行不知道它们来自哪个Wiki。

有没有办法解决/规避这个问题?运行作业队列时,我没有发现任何类型的变量,可以传递给localSettings.php,以便加载正确的设置并且作业可以正常运行。

2 个答案:

答案 0 :(得分:0)

通常,作业在当前Wiki的上下文中的每个页面加载上运行,这意味着在您的情况下队列应该没有问题,因为您的LocalSettings文件是分支的。但是,在某些情况下,作业队列可能会过载,在这种情况下,您需要禁用默认队列行为(通过设置$wgJobRunRate = 0;)并在crontab中配置维护脚本runner。这对于分支农场来说可能很棘手,但我认为它会像那样工作:

* * * * * php /path/to/your/wiki/maintenance/runJobs.php --wiki domainA.com
* * * * * php /path/to/your/wiki/maintenance/runJobs.php --wiki domainB.com
* * * * * php /path/to/your/wiki/maintenance/runJobs.php --wiki domainC.com

在脚本执行期间的这种情况下,LocalSettings.php中将提供两个常量:MW_DBMW_PREFIX(仅使用MW_DB),因此您需要修改LocalSettings.php:< / p>

...
$activeWiki = 'defaultWiki';
$switchVar = $_SERVER['SERVER_NAME'];
if( defined('DO_MAINTENANCE') && defined('MW_DB') ) {
    $switchVar = MW_DB;
}
switch( $switchVar ) {
    ...
}
...

答案 1 :(得分:0)

发现问题 - 问题是wiki是在权限门后面(只是普通的Apache),而异步作业不会继承权限,因此我必须将异步作业设置为false来解决它。

如果其他人遇到此问题 - $ wgRunJobsAsync = false;应该添加到localSettings.php