2010-01-23 7 views
1

실행하도록 예약 된 cronjob을 사용하여 2 개의 다른 서버에서 2 개의 폴더를 동기화 할 계획입니다. 예약 할 스크립트는 이전 인스턴스가 이미 실행 중인지 확인하고 그렇지 않은 경우 처리를 계속합니다.CRON 작업 내에서 PHP를 여러 번 호출하기 (종료 조건이 충족 될 때까지 자동 호출)

그래서 첫 번째 단계는 이러한 폴더를 동기화하는 것입니다. 매일 (또는 더 자주) 두 번째 서버에는 1-2,000 개의 새 파일이 추가되며 첫 번째 서버로 이동하여 처리해야합니다.

처리는 PHP에 의해 처리됩니다. 각 파일을 열고 각 행을 읽고이를 데이터베이스에 추가합니다.

내가하고 싶은 것은 폴더를 동기화하여 PHP 스크립트를 호출하여 파일을 구문 분석하는 것과 동일한 cron을 사용하는 것입니다. 하지만 많은 파일을 처리하는 데 얼마나 오래 걸릴지 모르겠으므로 각 요청에서 PHP가 처리하는 파일 수에 제한을 두는 것이 좋습니다.

PHP 스크립트 (파일 수/각 요청 수)에 제한이 없으면 쉽게 시간 초과 될 수 있습니다.

질문 : 처리가 완료 될 때까지 반복해서이 PHP 스크립트를 호출 할 수있는 방법이 있습니까? 이상적으로 wget (폴더 동기화)과 PHP가 모두 끝나면 잠금 장치가 제거되어 cron의 새 인스턴스가 실행될 수 있습니다.

어떤 제안은 환영

, 는

답변

2

스크립트의 끝에 header()을 배치하고 실행 흐름을 제어하는 ​​GET 매개 변수를 사용할 수 있습니다 감사합니다. 스크립트에서

parse.php?action=1

: 예를 들어, 즉


switch ($_GET["action"]) 
{ 
case 1: 
//action 1 goes here 
header("Location: ..."); 
exit(); 
break; 
case 2: 
//action 2 goes here 
header("Location: ..."); 
break; 
} 
exit(); 
+1

, 모든 파일을 구문 분석 할 때까지 (헤더를 통해) 리디렉션 유지. 그 트릭을해야합니다, 감사합니다! – Dragos

관련 문제