2011-08-18 6 views
0

나는 일주일에 한 번 PHP로 꽤 무거운 작업을 수행해야한다. 스크립트는 여러 위치 (웹 사이트, API)로 말리고, 수집하고, 데이터를 정렬하고, 데이터베이스에 삽입한다. 전체 스크립트는 내 Mac (localhost)에서 실행되는 데 약 10-15 분이 걸립니다. 서버에서 조금 더 빠르게 실행될 것입니다. 그럼에도 불구하고 - 나는 현재 AJAX를 반복하고 있으므로 각 작업이 완료되면 다음 작업이 시작됩니다. 이제는 자동으로 매주 실행해야합니다. 그래서 나는 AJAX Anymore와 함께 할 수 없다고 생각합니다.무거운 CRON 작업

스크립트를 30 분 동안 실행하도록 php.ini를 설정해야합니까, 아니면 더 좋은 방법이 있습니까?

답변

1

더 출력이 생성되지 않은있는 시간의 양에 의해 결정된다 참조. 따라서 데이터를 STDOUT에 쓰면 (예 : 로그 파일) 스크립트가 계속 실행됩니다.

그러나 명령 줄에서 스크립트를 실행하는 경우 max-execution-time은 기본값 인 0으로 설정되고 이미 제안 되었 듯이 AJAX-Request 대신 cronjob을 사용하여 스크립트를 시작하거나 유사한 방법. 나는 실제로 여러 데이터베이스 또는 유사한 목적으로 데이터를 동기화하는 것과 같은 관리 작업을 수행하는 대부분의 PHP 스크립트에 대해 그렇게합니다.

+0

PHP 파일을 실행하는 데 걸리는 시간과 상관없이 cron을 실행하면 오류가 발생하지 않습니다. 맞습니까? – Norris

+0

- 패키지 관리자가 제한 (최대 실행 시간> 0)을 설정하여 제한을 두지 않은 경우 php.ini 파일을 확인해야합니다. 또한 리눅스 시스템에는 다른 환경을위한 다른 php.ini 파일이 있다는 것을 기억하십시오. apache2는 CLI (명령 줄 인터페이스)와 다릅니다. 또 하나 더 : 로그 파일의 경우, 특별히'php myscript.php>/var/log/myscript.log'와 같은 파이프에 쓰는 것을 의미합니다. – Lars

1

php.ini는 작업을 예약하는 것과 아무 관련이 없습니다. PHP의 시작 설정을 정의하는 것입니다. 당신이 원하는 것은 크론 (cron) 일입니다.

OSX 크론 설정에

, http://hintsforums.macworld.com/showthread.php?s=&threadid=39005 PHP 스크립트의 maximum execution time

+0

너무 오래 걸리므로 PHP 런타임 오류가 발생할 수 있습니다. 그렇지 않습니까? – Norris

+0

당신은, 나는 트위터에서 스트림 데이터와 비슷한 것을 사용해서는 안됩니다. 그것은 몇 시간 동안 실행하고 나는 어떤 설정을 변경하는 것을 기억하지 않습니다. – Caimen

+3

명령 줄 PHP는 일반적으로 시간 제한이없는 기본값이며, cron 작업이 실행되는 환경입니다. –