下面的代码几乎可以工作,但这不是我真正想要的:
ob_start();
echo 'xxx';
$contents = ob_get_contents();
ob_end_clean();
file_put_contents($file,$contents);
有没有更自然的方式?
发布于 2012-11-07 07:01:16
这里有一种方法来转移输出,这似乎是原始问题
$ob_file = fopen('test.txt','w');
function ob_file_callback($buffer)
{
global $ob_file;
fwrite($ob_file,$buffer);
}
ob_start('ob_file_callback');
更多信息请点击此处:
http://my.opera.com/zomg/blog/2007/10/03/how-to-easily-redirect-php-output-to-a-file
发布于 2009-06-02 02:24:22
不,输出缓冲是最好的。尽管这样做会稍微好一点
ob_start();
echo 'xxx';
$contents = ob_get_flush();
file_put_contents($file,$contents);
发布于 2017-02-25 02:56:19
在我的特殊情况下,我需要一种跨平台的方式来重定向输出,这样我就可以使用tail -f log.txt或其他日志查看应用程序来跟踪日志。我想出了以下解决方案:
$logFp = fopen('log.txt', 'w');
ob_start(function($buffer) use($logFp){
fwrite($logFp, $buffer);
}, 1); //notice the use of chunk_size == 1
echo "first output\n";
sleep(10)
echo "second output\n";
ob_end_clean();
我没有注意到任何性能问题,但是如果你注意到了,你可以把chunk_size改成更大的值。
现在只需对日志文件执行-f操作:
tail -f log.txt
https://stackoverflow.com/questions/937627
复制相似问题