私はPHPで書かれたウェブサイトを持っています。ユーザーの 1 人は、2 つの ISP との 2 つのインターネット接続を持っている建物にいますが、ネットワークは 1 つです。そのため、ネットワーク上の任意のコンピューターがいずれかの Web 接続を介して接続する可能性があり、要求の途中で切り替えが発生する場合があるようです。これにより、スクリプトで内部サーバー エラーが発生することがあります。残念ながら、私の共有ホストのログにはあまり詳細がないようです。
だから、これが私の推測です。私のスクリプトはセッションを使用します。ユーザーがインターネット接続 1 でリクエストを送信すると、セッション ファイルがロックされます。その要求が処理されているため、インターネット接続 1 が切断され、インターネット接続 2 がオンになります。Apache/PHP は、応答をインターネット接続 1 (もう存在しません) に送り返そうとし続けます。ユーザーがインターネット接続 2 経由でページをリロードしようとします。PHP は、最初のスクリプトが終了してセッション ファイルのロックが解除されるのを待ちますが、決して終了しないため、最終的に内部サーバー エラーで終了します。
それで、どうすればこれを回避できますか?セッション ファイルが最後にロックされてから時間が経過した場合に、セッション ファイルを強制的にロック解除する方法はありますか? (実行に 3 秒以上かかったスクリプトはありません。たとえば、ロックが 15 秒以上経過している場合は、古いスクリプトが間違った IP アドレスにファイルを提供するのを待っていて、強制終了される可能性があることを意味します。 ) ありがとう!