その後、追跡を通じて、この種の状況の発生は PHP の file_get_contents() 関数と密接に関係していることがわかりました。
大規模および中規模の Web サイトでは、HTTP プロトコルに基づく API インターフェイス呼び出しが一般的です。 PHP プログラマーは、URL の返されたコンテンツを取得するために、シンプルで便利な file_get_contents("http://example.com/") 関数を使用することを好みますが、Web サイト http://example.com/ の応答が遅い場合は、file_get_contents(. " ) は常にそこでスタックし、タイムアウトしません。
php.iniにはPHPスクリプトの最大実行時間を設定できるパラメータmax_execution_timeがあることはわかっていますが、php-cgi(php-fpm)ではこのパラメータは有効になりません。 PHP スクリプトの最大実行時間を実際に制御できるのは、php-fpm.conf 構成ファイル内の次のパラメーターです: ワーカー プロセスが終了するまでの 1 つのリクエストを処理するためのタイムアウト (秒単位)
次の場合に使用する必要があります。 'max_execution_time' ini オプションは何らかの理由でスクリプトの実行を停止しません
'0s' は 'off' を意味します
完全な解決策を達成するには、PHP プログラマに file_get_contents("http://example.com/") を直接使用する習慣をなくしてもらい、わずかに変更してタイムアウトを追加し、次のように実装するだけです。 HTTP GET リクエストの方法。それが面倒な場合は、次のコードを自分で関数にカプセル化することもできます。