当用户中止请求时,如何让PHP-FPM进程终止? (Nginx的)

我知道Nginx与
PHP-FPM进程无关,但我更喜欢如果用户中止,PHP-FPM进程死了,所以它不会继续做不必要的事情或浪费资源.对于PHP-FPM / Nginx,无论用户是否中止,都会发生trigger_error:

<?php

sleep(30);
trigger_error('Still happened?');

?>

如何为PHP-FPM执行用户中止? (如果可能的话)

最佳答案

You can decide whether or not you want a client disconnect to cause
your script to be aborted.

根据PHP手册:Connection Handling

要设置此行为,请使用ignore_user_abort

客户端断开连接后,ignore_user_abort(FALSE);将中止PHP脚本的运行.

ignore_user_abort(TRUE);将忽略客户端断开连接并继续运行脚本.

在第二种情况下,您可能还希望根据需要使用set_time_limit,以便为脚本提供足够的时间来完成任务.

此设置已成功在PHP-FPM / nginx环境中进行了测试.

点赞