интерфейс командной строки — Как сохранить вывод процесса PHP CLI в файл

У меня есть PHP-скрипт, который генерирует некоторые HTML-отчеты, на создание которых уходит много времени (более 20-30 секунд).

Прямо сейчас файл reports.php отображает вывод для пользователя через браузер, сохраняя отчеты с использованием выходных буферов. (РЕДАКТИРОВАТЬ: имя файла отчета представляет собой код, созданный reports.php):

<?php
ob_start();

[...echo all the html for the tables in the report...]

file_put_contents('report.html', ob_get_contents());

// end buffering and displaying page
ob_end_flush();
?>

Поскольку мой процесс часто занимает много времени, я не хочу, чтобы пользователь застрял, глядя на экран в течение длительного времени, ожидая вывода или, что еще хуже, времени ожидания.

Я немного поискал и обнаружил, что лучший способ избежать этого — запустить этот процесс в фоновом режиме, используя PHP CLI. Я использую отдельный файл:

<?php
echo 'Your report is being generated. You'll get it via email.';
exec('nohup php reports.php > /dev/null 2>&1 &');
?>

Но это решение не позволяет сохранить с использованием буфера вывода. Я полагаю, это потому, что я перенаправляю на / dev / null?

Затем я попытался просто запустить процесс в фоновом режиме

<?php
echo 'Your report is being generated. You'll get it via email.';
exec('nohup php reports.php');
?>

Но это все равно не спасет. Что я делаю неправильно?
Есть ли варианты сохранить этот отчет на диск, не заставляя пользователя ждать с открытым окном браузера, чтобы отчет был возвращен?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector