fastcgi_finish_request

(PHP 5 >= 5.3.3, PHP 7, PHP 8)

fastcgi_finish_requestすべてのレスポンスデータをクライアントにフラッシュする

説明

fastcgi_finish_request(): bool

この関数は、すべてのレスポンスデータをクライアントにフラッシュし、 リクエストを終わらせます。 これにより、クライアントへの接続を開いたままにすることなく、 時間のかかる処理を実行することができます。

パラメータ

この関数にはパラメータはありません。

返り値

成功した場合に true を、失敗した場合に false を返します。

add a note add a note

User Contributed Notes 2 notes

up
64
tuxrampage
7 years ago
There are some pitfalls  you should be aware of when using this function.

The script will still occupy a FPM process after fastcgi_finish_request(). So using it excessively for long running tasks may occupy all your FPM threads up to pm.max_children. This will lead to gateway errors on the webserver.

Another important thing is session handling. Sessions are locked as long as they're active (see the documentation for session_write_close()). This means subsequent requests will block until the session is closed.

You should therefore call session_write_close() as soon as possible (even before fastcgi_finish_request()) to allow subsequent requests and a good user experience.

This also applies for all other locking techniques as flock or database locks for example. As long as a lock is active subsequent requests might bock.
up
0
Patrick Allaert
2 years ago
This is very poor man's approach to async execution.

Better relying on message queues to process something asynchronously.
To Top