2016-07-06 4 views
0

트래픽이 적거나 중간 정도 인 Wiki를 적은 수의 Wiki로 구성한 위키 패밀리를 설정했습니다.MediaWiki : 위키 팜/패밀리 편집 작업 실행

하나의 MediaWiki를 실행하면 링크 및 카테고리를 최신 상태로 유지하는 데 도움이되는 모든 페이지 요청에서 작업이 실행되지만 위키 패밀리에서 작동 할 수 없습니다.

(내가 SERVER_NAME에 따라) 브랜치 localSettings를 사용하는 위키 설정을 가지고 있으며 검색에도 불구하고이 작업 동작을 유지할 수있는 방법이 없다는 것을 알았지 만 대기열 작업을 대기 중입니다. 자동으로 실행되면 어떤 Wiki가 시작되었는지 알 수 없습니다.

이 문제를 수정/우회하는 방법이 있습니까? 올바른 설정이로드되고 작업이 제대로 실행될 수 있도록 작업 대기열이 실행될 때 localSettings.php로 전달 될 수있는 변수가 제공되지는 않습니다.

+0

문제가 발견되었습니다 - 문제는 위키가 허가 게이트 (일반 Apache 만) 뒤에 있고 비동기 작업이 권한을 상속받지 않아서 비동기 작업을 다음과 같이 설정해야한다는 것입니다. 그것을 해결하기 위해 거짓. –

답변

0

일반적으로 작업은 현재 Wiki 컨텍스트 내에서 각 페이지로드에서 실행됩니다. 즉, LocalSettings 파일이 분기되어 있기 때문에 대기열에 문제가 없어야합니다. 그러나 특정 상황에서 작업 대기열에 과부하가 걸릴 수 있으므로이 경우에는 ($wgJobRunRate = 0;을 설정하여) 기본 대기열 동작을 비활성화하고 crontab에서 유지 관리 스크립트 실행 프로그램을 구성해야합니다. 이는 분기 팜 까다로울 수있다,하지만 난 그것을 그런 식으로 작동합니다 생각 : 그래서, MW_DBMW_PREFIX (만 사용 MW_DB) : 스크립트 실행 중이 시나리오 두 상수 LocalSettings.php에서 사용할 수에

* * * * * 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 

문제는 위키 권한 게이트 (단지 일반 아파치 하나) 뒤에 있다고, 그리고 비동기 작업은 권한을 상속하지 않습니다 - 발견

... 
$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 설정과 관련이 있다고 생각하는 주된 이유는 분기 항목을 제거하고 단일 위키로 설정하면 작업이 완료된다는 것입니다. 그러나 일단 위키 패밀리와 분기하면 어떤 일도 전혀 끝나지 않습니다. 어떤 이유인지 SERVER_NAME이 큐 트리거와 함께 보내지는지 궁금합니다. 그러나 그 코드가 체크 아웃하기 위해 숨어있을 수있는 곳을 모르겠습니다. –

0

문제 : 당신은 그런 당신의 LocalSettings.php를 수정해야합니다 그래서 그것을 해결하기 위해 비동기 작업을 false로 설정해야했습니다.

누구든지이 문제가 발생하는 경우 - $ wgRunJobsAsync = false; localSettings.php에 추가해야합니다