2

ベンダー パートナーからのデータのインポートを実行する PHP スクリプトがあります。実行する必要があることの 1 つは、shell_exec() を介して別のスクリプトを呼び出し、イメージ ファイルを処理して Amazon S3 バケットにアップロードすることです。現在、このスクリプトからの出力をターミナルで見ています。しばらくすると、次のような一連のメッセージが表示されます。

Warning: shell_exec(): Unable to execute 'php -f /path/to/second/script.php /path/to/image/to/process.jpg' in /path/to/this/script.php on line 453

奇妙なことに、この同じスクリプトがこのスクリプトで複数回呼び出され、最初は機能し、その後停止します。他のスクリプトからも呼び出され、それらで正常に動作します。実行できなかったコマンドをコピーして自分に貼り付けると、常に機能します。明らかに、PHP は時々それを実行できます。

実行中の各行にメモリ使用量のエコーを配置しました。正常に動作している場合は最大で 148MB、エラーが発生している場合は最小で 77MB であることがわかりました。(これは実行できないセカンダリ スクリプトではなく、メイン スクリプトにあります)。エラーが発生し始めるにつれて、メモリ使用量はどんどん少なくなっていくようです。最初に気付いたのは約 88MB でしたが、その後 85MB、81MB、そして 77MB に落ちました。

スクリプトが機能する場合と機能しない場合がある原因については不明です。前回チェックしたとき、PHP は問題が発生する可能性があるかどうかを判断することはできませんでした。ダウンロード)、突然動作しなくなります。ダウンロードできなかった画像を処理しようとしているわけではありません。スクリプトにはそれを防ぐ条件がありimage does not exist、残りの処理に失敗している間でも負荷がかかることがよくあります。結局、実行して戻ってきて、不足しているすべての画像を後で再度処理する別のスクリプトを作成する必要がありました。

どんな考えでも本当に感謝しています!

ちなみに、これは Amazon Linux OS を搭載した大規模な AWS EC2 インスタンスで実行されています。PHP5.3を実行しています

4

1 に答える 1