首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PHP中将STDOUT重定向到文件?

如何在PHP中将STDOUT重定向到文件?
EN

Stack Overflow用户
提问于 2009-06-02 01:53:07
回答 5查看 63.3K关注 0票数 58

下面的代码几乎可以工作,但这不是我真正想要的:

代码语言:javascript
复制
ob_start();
echo 'xxx';
$contents = ob_get_contents();
ob_end_clean();
file_put_contents($file,$contents);

有没有更自然的方式?

EN

回答 5

Stack Overflow用户

发布于 2012-11-07 07:01:16

这里有一种方法来转移输出,这似乎是原始问题

代码语言:javascript
复制
$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

票数 19
EN

Stack Overflow用户

发布于 2009-06-02 02:24:22

不,输出缓冲是最好的。尽管这样做会稍微好一点

代码语言:javascript
复制
ob_start();
echo 'xxx';
$contents = ob_get_flush();
file_put_contents($file,$contents);
票数 9
EN

Stack Overflow用户

发布于 2017-02-25 02:56:19

在我的特殊情况下,我需要一种跨平台的方式来重定向输出,这样我就可以使用tail -f log.txt或其他日志查看应用程序来跟踪日志。我想出了以下解决方案:

代码语言:javascript
复制
$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操作:

代码语言:javascript
复制
tail -f log.txt
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/937627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档