2016-07-06 59 views
0

我已經建立了一個Wiki家族組成少數維基已經(並預計將繼續有)低到中等流量的編輯上運行。鏈接到MediaWiki:找工作對維基農場/家庭

當你運行一個鏈接到MediaWiki,它運行在每個頁面請求這是保持聯繫和類別最新的一個很好的工作,但我不能讓這種行爲對維基家庭工作。

我有一個具有分支localSettings(取決於SERVER_NAME)的wiki設置,儘管搜索(並詢問Mediawiki)沒有辦法保持這種工作行爲,但我得到的工作排隊,大概是因爲維護腳本自動運行不知道他們來自哪個Wiki。

有沒有辦法解決/規避呢?當運行作業隊列時,我沒有發現任何類型的變量可以傳遞到localSettings.php,以便加載正確的設置並且作業可以正常運行。

+0

發現問題 - 問題是,維基是一個允許門(只是一個普通的Apache的一個),以及異步工作不繼承權限後面,所以我必須設置異步作業錯誤解決它。 –

回答

0

一般作業當前維基的環境中每個頁面加載運行,這意味着你的情況應該與隊列中沒有問題,因爲你的LocalSettings文件分支。儘管在某些情況下,作業隊列可能會過載,但在這種情況下,您需要禁用默認隊列行爲(通過設置$wgJobRunRate = 0;)並在crontab中配置維護腳本運行程序。這可能會非常棘手的支農場,但我認爲它會像說:

* * * * * 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這樣的:發現

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

不幸的是,通過設置,隊列中存在問題 - 即使確保隊列爲空(通過手動運行runJobs - 如果您設置了SERVER_NAME var,這將起作用),並且將jobrunrate設置爲比應該更高我爲此測試將其設置爲3,並且在維基上的密碼後面表示沒有其他流量正在進行),觸發頁面請求根本不會進展隊列。 我可以通過設置一個cron來解決這個問題,但我試圖查看是否可以使頁面請求正常工作,因爲這意味着它會更具響應性。 –

+0

您的工作隊列有可能被卡住(因爲失敗的工作或其他事情)。你可以嘗試手動清理你的「工作」表,並觀察它後面的情況。 – wakalaka

+0

剛剛嘗試過,沒有成功。我認爲這與分支/ wikifarm設置有關的主要原因是,如果我刪除了分支內容並將其設置爲僅僅是一個wiki,那麼這些工作就完成了。但是,一旦我把它與維基系列分道揚,,就沒有任何工作能夠完成。 我想知道是否由於某種原因,SERVER_NAME沒有與隊列觸發器一起發送,但我不知道該隱藏的代碼在哪裏檢查出來。 –

0

問題 - 問題是,維基是一個允許門(只是一個普通的Apache的一個)的後面,和異步工作不繼承權限,所以我必須將異步作業設置爲false來解決它。

如果任何人得到這個問題 - $ wgRunJobsAsync = FALSE;應該被添加到了LocalSettings.php