gpt4 book ai didi

php - 如何将 STDOUT 重定向到 PHP 中的文件?

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:03 25 4
gpt4 key购买 nike

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

ob_start();
echo 'xxx';
$contents = ob_get_contents();
ob_end_clean();
file_put_contents($file,$contents);

有更自然的方法吗?

最佳答案

可以将 STDOUT 直接写入 PHP 中的文件,这比使用输出缓冲更容易、更直接。

在脚本的开头执行此操作:

fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);
$STDIN = fopen('/dev/null', 'r');
$STDOUT = fopen('application.log', 'wb');
$STDERR = fopen('error.log', 'wb');

为什么一开始你可能会问?还不应打开任何文件描述符,因为当您关闭标准输入、输出和错误文件描述符时,前三个新描述符将成为新的标准输入、输出和错误文件描述符。

在我的示例中,我将标准输入重定向到/dev/null 并将输出和错误文件描述符重定向到日志文件。这是在 PHP 中制作守护程序脚本时的常见做法。

要写入application.log文件,这就足够了:

echo "Hello world\n";

要写入error.log,必须执行以下操作:

fwrite($STDERR, "Something went wrong\n"); 

请注意,当您更改输入、输出和错误描述符时,内置 PHP 常量 STDIN、STDOUT 和 STDERR 将变得不可用。 PHP 不会将这些常量更新为新的描述符,并且不允许重新定义这些常量(毕竟它们被称为常量是有原因的)。

关于php - 如何将 STDOUT 重定向到 PHP 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27306994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com