ホームページ >バックエンド開発 >PHPチュートリアル >register_shutdown_function AND fastcgi_finish_request,registershutdownhook_PHP 教程
php では、リクエストが終了しようとしているときに 2 つのメソッドが実行されます。メソッド名はそれぞれ register_shutdown_function と fastcgi_finish_request です。実行のタイミングは似ていますが、機能とアプリケーションのシナリオは異なります。 2 つの方法の違いを比較することは、この記事の焦点ではありません。この記事の焦点は、2 つの方法の適用シナリオを説明することです。
特徴:
メソッドを登録します。リクエストリクエストが実行されると、登録されたメソッドが呼び出されます。実行中にエラーが発生し、このリクエストが強制終了された場合でも、登録されたメソッドは引き続き実行されることに注意してください。
アプリケーションシナリオ 1:
その機能を使用して、いくつかのエラーの詳細情報を取得できます。サンプルコードは次のとおりです:
リーリー出力される情報はおおよそ次のとおりです:
リーリー上記のコードはメモリ不足エラーを正常にキャプチャしていることがわかります。
アプリケーションシナリオ 2
リクエストが正常にクローズされたかどうかを確認します。サンプルコードは次のとおりです:
ページの出力結果は次のとおりです: 失敗
die関数まで呼ばれていることがわかります。登録した監視機能も正常に実行されます。
機能:
データをクライアントにフラッシュします。このメソッドを呼び出した後、出力内容はクライアントに出力されません。
アプリケーションシナリオ:
リクエストの処理内容の一部をクライアントに送信する必要がない場合は、まずクライアントに出力する内容を生成してから、このメソッドを呼び出すことができます。メソッドが呼び出された後、コンテンツがクライアントに出力されます。クライアントに出力する必要のないコンテンツは、このメソッドの後に配置できます。これにより応答性が向上します。サンプルコードは次のとおりです:
リーリーページの出力結果は、 a
fastcgi_finish_request メソッド後の echo "b" がクライアントに出力されていないことがわかります。ただし、ファイルは /tmp/test ディレクトリに通常どおり作成されていることがわかります。しかし、/tmp/bo56 ファイルは作成されませんでした