ホームページ  >  記事  >  バックエンド開発  >  PHP の実行時間が長すぎるため、他のリクエストに応答しません。

PHP の実行時間が長すぎるため、他のリクエストに応答しません。

angryTom
angryTomオリジナル
2019-10-16 16:09:102202ブラウズ

PHP の実行時間が長すぎるため、他のリクエストに応答しません。

実行に 10 分以上かかる PHP スクリプトを PHP-FPM で実行しないでください。

1. PHP-FPM で実行されている PHP スクリプトは、pclose(popen()) を使用して、スクリプトの実行をブロックせずに PHP-CLI プロセスを開くことをお勧めします。

2. 実行が完了したら、メッセージをデータベースに挿入します。

3. フロント デスクは、AJAX スケジュール ポーリングを通じてメッセージ通知を実行します (Zhihu のメッセージ通知と同様)。

この種の時間のかかるスクリプトを PHP-FPM で実行する必要がある場合、それは不可能ではありません。

まず、このスクリプトを事前に設定された独立した PHP-FPM 動的プロセス プール (異なる PHP-FPM プロセス プールが異なるポートをリッスンする) に処理のために転送するように Nginx を設定する必要があります。スクリプトの内容は、他の PHP-FPM プロセス プールには影響しません。さらに、動的プロセス プール (pm = 動的) は、より多くのメモリ消費を犠牲にして、スクリプトを処理するためにより多くのプロセスを動的にフォークアウトできます。この場合、プロセスの最大数 (pm.max_children = 20) を構成することをお勧めします。 。

HTTP リクエスト終了後も PHP-FPM に業務処理を継続させたい場合は、fastcgi_finish_request()PHP-FPM が提供するこの関数を使用できます。

推奨: 「PHP チュートリアル」

以上がPHP の実行時間が長すぎるため、他のリクエストに応答しません。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。