2011-01-26 6 views
0

커맨드 라인 PHP 을 실행하여 웹 서비스를 호출하고 매일 7 시간 동안 DB에 데이터를 삽입하는 스크립트를 실행합니다. 이상한 일은 가끔 끝나지 않는 경우입니다.PHP로 crontab이 시작되었지만 때로는 끝내 지 않습니다.

나는 예외가 잡히면 여전히 스크립트의 끝까지 검사해야 함을 확인했다. 스크립트에 오류가 있으면 run.html에 오류가 표시됩니다.

내 crontab을 내 run.html 나던 작성, 상황은 지금 때로는 매 7 시간

php run.php >> "run.html" 

아래와 같이 실행하는 bash는 스크립트를 아무것도있다 실행 중입니다. 0 바이트.

실행 중일 때이 프로세스에는 pid가 연결되어 있습니다. 그러나 run.html에 아무 것도 기록되지 않고 (ps -eo pid, lstart, etime, cmd | grep php 명령을 사용하여) 프로세스를 다시 확인한 후 7 시간이 지나면 프로세스가 이미 종료되었음을 알게됩니다.

I하지 시간 제한 문제가 php_errors.log에 표시 오류가없고, 나는 이미 어떤 다른 원인이 될 수 내 스크립트

 ini_set ("memory_limit",0);

에서 설정 한대로인가?

+0

스크립트가 완료되기 전에 오류 상태가 발생하면 run.html에 기록하는 것이 좋습니다. 어딘가에 이런 일이 발생하는 오류가있을 수 있습니다. 수명이 긴 프로세스는 일반적으로 디버그하기가 까다 롭습니다. – Wayne

+0

많은 도움이되는 한 가지는 로깅을 많이 추가하는 것입니다. 이미 출력물을 캡처하고 있기 때문에 때때로 상태를 반향시키고 싶을 수 있습니다. PHP 오류를 출력하지 않는 잘못된 데이터를 치는 것일 수 있습니다. –

+0

hmmm, 그것에 대해 좀 더 말해줘. 내가하는 일은 echo 일지라도 run.html은 공백이다. php를 컴파일 한 후에 만 ​​렌더링되고 bash 스크립트는 .html 파일에 쓰여진다. – flyclassic

답변

0

웹 서버를 호스팅하는 사람에 따라 일부 관리자가 서버를 재부팅하거나 장기간 실행중인 프로세스를 직접 종료 할 가능성이 있습니다. (아마도 그는 좀비로 착각하고있는 것일까 요?)

공유 서버에서 호스팅되는 사이트에서 많은 작업을 해본 경험이 있습니다. 경험상 이러한 문제가 자주 발생합니다. 문제는 기술적이지 않으며, 실제로 할 수있는 일은 다른 호스트로 옮기는 것입니다.

그럼 그걸 조사하고 싶을 것입니다. 호스팅 제공 업체에 이메일을 보내 그들이 상황에 대해 밝힐 수 있는지 확인하십시오.

행운을 빈다.

+0

내가 가진 서버가 우리 팀에만 사용 되었기 때문에 나의 경우에는 사실이 아니며 아무도 여기에서 프로세스를 시작하거나 종료하지 않습니다. – flyclassic

관련 문제