Я провел много исследований о том, как создавать задания, выполняемые в фоновом режиме с помощью PHP.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
?>
Когда я использую заголовок («Content-Length: $ contentLength»); сценарий ничего не возвращает. Когда я комментирую это, я получаю результаты за тысячу, используя лимит. Если я хочу получить все миллионы, сервер перестает отвечать на запросы через 3-4 минуты.
Мне просто нужно получить огромный отчет о статистике и не хочу, чтобы пользователь получил сообщение Достигнуто максимальное время выполнения. Я не хочу повышать лимит времени выполнения, так как предел неизвестен. Это может занять до часа. Мне нужно, чтобы он работал в фоновом режиме.
Да, это помогает. Хороший подход – dev