我对如何使用 PHP 创建在后台运行的作业进行了大量研究。
<?php
ignore_user_abort(true); // run script in background
set_time_limit(0); // run script forever
// get the size of the output
ob_start();
include_once '';//many includes
//$contentLength = ob_get_length();
// these headers tell the browser to close the connection
// once all content has been transmitted
//header("Content-Length: $contentLength");
header('Connection: close');
// flush all output
ob_end_flush();
ob_flush();
flush();
// close current session
if (session_id()) session_write_close();
//lot of code, fetch query from DB with millions records and do calculations
?>
当我使用 header("Content-Length: $contentLength"); 该脚本不返回任何内容。当我评论它时,我得到了数千个使用限制的结果。如果我想检索所有数百万服务器在 3-4 分钟后停止响应
我只需要获得一个庞大的统计报告,并且不想让用户收到消息达到最大执行时间。我不想提高时间执行限制,因为限制是未知的。最多可能需要一个小时。我需要它在后台运行。