2011-02-06 2 views
3

기본적으로 cron 작업을 사용하여 ftp에서 압축 xml을 풀고, mysql 조작, api 액세스 등을 실행하는 데 꽤 많은 시간이 걸리는 PHP 스크립트를 실행하고 있습니다. . 문제는 크론 작업을 실행할 수있는 시간을 15 분으로 제한하는 서버에서 실행되고 있다는 것입니다.cron 시간 제한에 대한 해결 방법

내 질문은 :이 제한을 해결하기 위해 어떤 방법을 사용할 수 있습니까? 스크립트를 조각으로 나누면 15 분 제한 시간 동안 조각이 계속 실행되므로 그만한 결과가 나옵니다. 특정 시간 동안 실행 한 후에 다른 PHP 스크립트로 리디렉션 할 수있는 방법이 있습니까? 또는 15 분 제한 시간에 도달하기 전에 bash 스크립트를 사용하여 스크립트를 다시 시작할 수 있습니까?

감사합니다.

+0

cron에서하지 않습니까? –

+1

당신은 아마 당신의 호스트 용어를 어기 게 될 것입니다. 어떤 제한을 피하려고 노력합니다. 나는 전용 박스를 얻거나 호스트를 이동하는 것을 들여다 보았습니다. –

+0

그래, 가상 서버를 얻으면 매분마다 cron을 실행할 수 있습니다. 기어맨과 함께 일하기 시작했습니다 : http://gearman.org/. 직업을 처리하는 데 도움이 될 수 있습니다. –

답변

2

나의 첫번째 조언은 새 호스트를 발견하는 것입니다 그것은 크론에서 스크립트를 해제합니다 ,하지만 그것은 지금 당신을위한 옵션이 아닌 것처럼 들리네.

런타임을 추적 할 수 있으며 은 15 분 제한 시간을 맞추기 직전에 상태를 DB 또는 플랫 파일로 저장합니다. cron에서 다음 라운드는 DB 또는 파일을보고 중단 한 부분을 어디에서 가져올지를 알 수 있습니다.

이것은 스크립트가 수행하는 작업에 따라 다릅니다. X 번호의 레코드에서 동일한 작업을 수행하는 중이라면 이와 비슷한 것을 구현할 수있는 것 같습니다.

0

한계는 구현 방법에 따라 다릅니다. 어떤 경우에는 exec()을 사용하여 다른 스크립트를 실행하여 프로세스를 분리 할 수 ​​있습니다.

스크립트를 실제로 '다시 시작'할 수 없습니다. 가능하다면, 어쨌든 처음부터 시작됩니다.

왜 나눌 수 없습니까? 하루에 cron에서 실행되는 스크립트에 대해 15 분간 사용법을 얻으시겠습니까? 다른 호스트 공급자가 필요한 것처럼 들리지만 그 한계는 매우 절름발이입니다. 그리고 15 분, 당신은 어떤 종류의 거대한 파일을 다루고 있습니까? 어쩌면 당신은 15 분 이내에 실행되도록 노력해야합니다.

편집

한계가 스크립트, 크론에서 실행 단지에 같은 소리 때문에 내가 생각 당신은 다른 시스템의 실제 크론을 가지고, 그냥 스크립트를 호출하기 위해 wget을 사용하지 않는 이유 원격 서버에서.

+0

서버가 랙 공간 클라우드 호스팅에 있습니다. 나는 어리석은 한계에 동의합니다! 그러나 나는 현재 호스팅을 이동할 수있는 위치에 있지 않습니다.스크립트는 API 호출을 수행하는데, 특히 50,000 개의 레코드를 실행하는 데에는 상당한 시간이 걸립니다. 장소 표시자를 제공하기 위해 $ _GET 변수를 사용하여 PHP 스크립트 내부에 헤더를 보낼 수 있습니까? – nnelson

+0

예를 들어 스크립트의 일정량을 통과 한 후에 2 단계를 호출 할 수 있지만 그 방법이 도움이 될지 모르겠다. 만약 당신이 그것을 해체하고 실행 한 것과 다를 바 없다. 다른 작업으로 시작 ... 내 대답을 수정하면 다른 해결책이 될 수 있습니다. – profitphp

0

cron 작업의 백그라운드 스크립트를 사용해 볼 수 있습니다. 내가 그렇게 오래 실행 cron 작업을 해본 적이으로

0 0 * * * php /path/to/file.php & 

같은 뭔가 나는이 전술을 해본 적이 있지만,

관련 문제