ホームページ  >  記事  >  バックエンド開発  >  Laravelのfastcgi_finish_request()関数の詳しい説明

Laravelのfastcgi_finish_request()関数の詳しい説明

零下一度
零下一度オリジナル
2017-06-23 13:51:182577ブラウズ

fastcgi_finish_request() は、接続応答データを早期に終了し、バックエンドでタスクを実行し続けることができる php-fpm によって提供される関数です。実行に長時間かかるのを防ぐ タスクを実行する場合や応答速度を向上させる場合には、この機能を使用して簡単に実装することもできます。もちろん、より良い方法はキューを使用することです。 fastcgi_finish_request()php-fpm提供的可提前结束连接响应数据并在后端继续执行任务的函数,为了执行耗时较长的任务或提高响应速度的时候,我们可以使用这个函数来简单实现,当然,更好的方式是使用队列。

在Laravel中,发送响应就会调用fastcgi_finish_request()(若存在),之后会调用terminate()方法,该方法会依次执行注册的中间件中的terminate()方法。

文档中使用 Terminable Middleware 是需要注册全局中间件,但实际中,我们可能只需要对部分接口进行提前响应,然后处理后续逻辑(数据库、日志...)。但通过源码  可以看到,Laravel的routeMiddleware实际上是支持 Terminable Middleware 的,所以我们可以像下面这样定义个FinishRequest

Laravel では、応答を送信すると fastcgi_finish_request() (存在する場合) が呼び出され、その後 terminate() メソッドが呼び出され、登録されたミドルウェアが実行されます。シーケンス内の terminate() メソッド。
ドキュメント内でターミナブル ミドルウェアを使用するには、グローバル ミドルウェアを登録する必要がありますが、実際には、一部のインターフェイスに事前に応答し、後続のロジック (データベース、ログなど) を処理するだけで済みます。しかし、ソースコードからわかるように、Laravel の routeMiddleware は実際には Terminable Middleware をサポートしているため、次のように FinishRequest ミドルウェアを定義して使用を登録できます。 🎜🎜りー🎜

以上がLaravelのfastcgi_finish_request()関数の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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