+
78
-

php中php-fpm脚本超时如何继续执行?

php

php中php-fpm脚本超时如何继续执行?


网友回复

+
3
-

在 PHP 中,如果脚本超时(max_execution_time),默认情况下脚本会停止执行。然而,有时我们希望即使脚本超时,它仍然能够继续运行,尤其是在使用 PHP-FPM 的环境中。以下是实现这一目标的几种方法:

1. 设置 ignore_user_abort

PHP 提供了一个函数 ignore_user_abort(),可以用来控制当客户端断开连接时,脚本是否继续执行。

示例代码:
<?php
// 忽略用户断开连接后脚本停止执行
ignore_user_abort
(true);

// 设置脚本运行时间无限制
set_time_limit
(0);

// 模拟长时间运行的任务
while (true) {
    file_put_contents
('log.txt', date('Y-m-d H:i:s') . "\n", FILE_APPEND);
    sleep
(5); // 每 5 秒记录一次日志
}
解释:ignore_user_abort(true):即使客户端断开连接,脚本也会继续运行。set_time_limit(0):将脚本的最大执行时间设置为无限制。

这种方法适用于需要长时间运行的后台任务。

2. 使用 PHP-FPM 的 fastcgi_finish_request

fastcgi_finish_reque...

点击查看剩余70%

我知道答案,我要回答