1

現在、「システム リソースの過剰使用」のために、ホスティング プロバイダーによって 2 回停止された Web サイトがあります。いずれの場合も、私の PHP スクリプトの 1 つの 300 ~ 400 のクラッシュしたコピーがサーバー上で実行されたままになっていました。

スクリプト自体は、自宅の Web カメラから画像を取得してサーバーにコピーします。ファイル ロックを利用して、一度に 1 つのみ書き込みできるようにします。スクリプトは、ページを表示しているクライアントによって 3 秒ごとに呼び出されます。

PHPスクリプトが完了する(結果を返す)か、クラッシュする(内部サーバーエラーページを返す)ことを理解していたので、最初は混乱しました。ただし、「無効なスクリプト」は非常によくあることだと聞いています。

誰かが私を教育することができますか?これをグーグルで検索しましたが、スクリプトがクラッシュした状態になる方法がわかりません。最大実行時間に達するとタイムアウトしませんか?

私のホスティング プロバイダーは、Linux プラットフォーム上で CGI として設定された PHP を使用しています。flock がブロッキング関数であることを認識していなかったという点で (そして、LOCK_NB マスクを使用していないため)、スクリプトの問題を実際に特定したと思います。リソースが利用可能になるのを待って、何百ものスクリプトのコピーがブロックされ、クラッシュにつながると思いますか? これはもっともらしく聞こえますか?サイトが再び停止されることを恐れて、サイトを再度有効にすることには消極的です。

どんな洞察も大歓迎です。

4

2 に答える 2

1

おそらく、私がお勧めするアプローチは、tempnam()最初に使用し、その中に内容を書き込むことです (これには時間がかかる場合があります)。完了したら、ファイルのロックなどを行います。

PUT リクエストが実行されているときにこれが発生するかどうかは不明です。通常、PHP は最初にファイルのアップロードを処理してから、実行をスクリプトに引き渡します。

于 2012-08-15T13:43:03.547 に答える
0

これらの 2 つの制限により、スクリプトがクラッシュする可能性があります

  • max_execution_time
  • メモリ制限

スクリプトに他のエラーがない限り、リソースの操作中/通知エラーもチェック

于 2012-08-15T12:14:48.363 に答える