2016-10-27 9 views
-1

나는 cron에서 작업을합니다. 매 3 시간마다 PHP 스크립트가 실행됩니다.크론 명령은 60 초마다 php 스크립트를 실행 한 다음 모든 것을 과부하합니다.

나는 WGET과 PHP도 시도했지만 같은 문제가있다. 때때로 스크립트는 2 분 이상 작동하지만 대개 30 초 정도는 작동합니다. 실행 시간이 60 초가 넘으면 (504getway) cron은이 스크립트를 다시 실행합니다. 그리고 또 다시. 몇 시간 후에 치명적인 과부하가 발생합니다.

내가 다른 구문의 거대한 양이 시도

하지만, 실패 :

일이 어떻게 내 스크립트를 실행하기 만 한 시도하여 명령을 관리 할 수 ​​있습니다 -t? 60 초마다 백만 번씩 실행하지 않아도됩니다. 어떤 제한 사항?

부적절한 스크립트 실행을 방지하기 위해 실행 시간을 20 초로 제한하거나 줄일 수 있습니다. 난 그냥 스크립트를 실행해야합니다, 나는 시스템이 어떤 시간을 기다릴 필요가 없습니다, 스크립트는 어떤 식 으로든 작업을 완료합니다. set_time_limit (int $seconds); 모두의 더 here

+0

치명적인 과부하 어디에서? 작업을 실행하는 시스템 또는 작업이 부딪히는 시스템? –

+0

cron 작업에 대한 crontab 항목을 게시하십시오. 아마도 해당 간격에 문제가있을 수 있습니다. 콘솔에서 직접 명령을 시도한 적이 있습니까? 이 경우 실행 시간은 얼마나됩니까? –

답변

0

당신은 PHP 스크립트에서 직접 최대 실행 시간을 설정할 수 있습니다. cron 작업을 위해 PHP 스크립트를 사용하려면 커맨드 라인 스크립트로 실행하는 것이 더 좋으며 따라서 웹 서버를 통해 이 아닌이 아닌 다른 스크립트를 직접 실행하십시오.

스크립트에서 서버 정보 나 GET/POST 변수에 의존하지 않는다고 가정하면 : 한번 실행 해 보았습니다 ? 그렇게 할 때 이상한 일이 있습니까?

스크립트에만 3 시간마다 한 번씩 실행됩니다 아래와 같은 간단한 crontab 항목 : 당신은 같은 시간에 실행하는 두 스크립트의 피 보장하려면

* */3 * * * php /path/to/script.php 
0

첫째는 wget 제안 나쁜 일입니다 볼과

+0

SSH를 통해 직접 또는 브라우저를 통해 직접 제공합니다. 그것은 60 초 이상이 필요하더라도 그것이 작동해야합니다. 문제는 cron이 초과 작업에 직면했을 때 스크립트가 다시 실행되지만 이전 실행은 아직 진행 중이며 60 초 후에 다시 충돌합니다. 그래서 최대 실행 시간 set_time_limit (int $ seconds)이면 충분합니까? –

+0

3 시간마다 스크립트를 실행하고 있다면 스크립트 실행이 겹쳐지는 것을 상상할 수는 없지만 ... 스크립트의 시작 부분에서'set_time_limit (60)'을 사용하면이 스크립트가 성공할 수 있습니다. 60 초 이상 뛰지 마십시오. – 1sloc

+0

set_time_limit (120)가 정상적으로 작동합니다. 스크립트를 끝내기에 충분한 120 초. 감사합니다. –

0

, 당신은 잠금의 어떤 종류를 사용해야을, 예 가장 간단한 파일 잠금 flock