如何将PHP CLI进程的输出保存到文件

如何将PHP CLI进程的输出保存到文件,php,command-line-interface,background-process,Php,Command Line Interface,Background Process,我有一个PHP脚本,可以生成一些HTML报告,生成这些报告需要很长时间(超过20-30秒) 现在,reports.php文件正在通过浏览器向用户回显输出,并使用输出缓冲区保存报告。(编辑:报告文件的名称是由reports.php生成的代码): 由于我的过程通常需要很长时间,我不希望用户长时间盯着屏幕等待输出,甚至更糟糕的是,等待超时 我做了一些搜索,发现避免这种情况的最好方法是在后台使用PHPCLI启动这个过程。我正在使用一个单独的文件: <?php echo 'Your report

我有一个PHP脚本,可以生成一些HTML报告,生成这些报告需要很长时间(超过20-30秒)

现在,reports.php文件正在通过浏览器向用户回显输出,并使用输出缓冲区保存报告。(编辑:报告文件的名称是由reports.php生成的代码):


由于我的过程通常需要很长时间,我不希望用户长时间盯着屏幕等待输出,甚至更糟糕的是,等待超时

我做了一些搜索,发现避免这种情况的最好方法是在后台使用PHPCLI启动这个过程。我正在使用一个单独的文件:

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

但这仍然无法挽救。我做错了什么?
是否有任何选项可以将此报告保存到磁盘,而不必让用户在浏览器窗口打开时等待报告回显?

exec('nohup php reports.php>output.txt')?重定向标准输出不应影响输出缓冲区的文件内容。@danil问题是,output.txt的名称是由报表生成的代码。php@frz3993看来问题出在诺胡普身上。当我通过命令行执行启动程序脚本时,如果没有nohup,经过一些搜索后,它就会工作。问题似乎出在SuPHP和exec()上。SUPPP似乎不允许运行后台任务。
<?php
echo 'Your report is being generated. You'll get it via email.';
exec('nohup php reports.php > /dev/null 2>&1 &');
?>
<?php
echo 'Your report is being generated. You'll get it via email.';
exec('nohup php reports.php');
?>