2011-01-26 26 views
0

私はコマンドラインPHP を実行するcronジョブを実行します。このスクリプトは、Webサービスを呼び出し、毎日7hrsのようにDBにデータを挿入します。 奇妙なことは時には決して終わらないことです。crontabが起動しましたが、時々終了しません

例外が検出された場合でも、スクリプトの最後までは引き続き確認する必要があります。スクリプトにエラーがある場合、私のrun.htmlにエラーが表示されるはずです。

私のcrontabは、すべての7時間

php run.php >> "run.html" 

以下のような状況は今、時々、私のrun.html doesntのは、書かれたものを持っている走るbashスクリプトを実行しています。 0バイト。

実行中は、このプロセスにpidが関連付けられています。 しかしrun.htmlには何も書かれていないのに、ps -eo pid、lstart、etime、cmd | grep phpというコマンドを使ってもう一度プロセスをチェックしても、プロセスが既に終了していることが分かります。

php_errors.logに示す誤りがないように私には時間がタイムアウトの問題であるしていない、と私はすでに私のスクリプトで

 ini_set ("memory_limit",0);

を設定して、それが他のどのような原因だろうか?

+0

スクリプトが完了する前にエラー状態が発生した場合は、run.htmlに書き込むことを検討してください。たぶん、これが起こる原因となるエラーがあります。長寿命のプロセスは通常、デバッグするのが難しいです。 – Wayne

+0

多くのログを追加するのに役立つものが1つあります。すでに出力をキャプチャしているので、ときどき状態をエコーすることができます。あなたは必ずしもPHPエラーを出力していない悪いデータを打つかもしれません。 –

+0

hmmm、それについてもっと教えてください。私はエコーをしても、run.htmlはまだ空白です。なぜなら、PHPのコンパイルが終了した後でレンダリングされ、その後に.htmlファイルに書き込むbashスクリプトが続きます。 – flyclassic

答えて

0

あなたのウェブサーバーを誰がホスティングしているかによって、一部の管理者がサーバーを再起動するか、長時間実行しているプロセスを簡単に終了させる可能性があります。

私は共有サーバー上でホストされているサイトで多くの作業を行いました。私の経験では、これらの行に沿った問題はかなり頻繁に発生します。問題は技術的ではないので、実際にはできることは、別のホストに移動することだけです。

だから、それを調べるとよいでしょう。ホスティングプロバイダに電子メールを送信して、彼らがあなたのために状況にどのような光を当てることができるかどうかを確認します。

幸運。

+0

私の持っていたサーバは私たちのチームだけであり、誰もプロセスを起動したり殺したりしているわけではないので、私の場合はあまり真実ではありません。 – flyclassic

関連する問題