【发布时间】:2014-04-03 10:58:44
【问题描述】:
我在下面有这个 PHP 脚本,由于某种原因,它不允许我在脚本运行时输出到浏览器。这是一个繁重的脚本,可能会在生产环境中运行 10 到 15 分钟,所以我需要能够看到正在运行的输出,而不是最后的大量输出。
set_time_limit(0);
ini_set("memory_limit", "256M");
apache_setenv('no-gzip', 1);
ini_set('zlib.output_compression', 0);
ini_set('implicit_flush', 1);
ob_end_flush();
ob_flush();
flush();
ob_start();
echo "Script STARTED at " . date("Y-m-d H:i:s", time()) . "<br />";
// get all the "payments"
$result = mysql_query("SELECT * FROM payments");
while ($payment = mysql_fetch_array($result)) {
// do a SQL update in here
echo "Write out progress here...<br />";
}
echo "Script ENDED at " . date("Y-m-d H:i:s", time()) . "<br />";
httpd -v 给了我:
服务器版本:Apache/2.2.3 服务器搭建时间:2011 年 10 月 20 日 17:00:12
我正在运行 PHP 5.3.27
我从其他 SO 帖子中获取了此脚本中的一些代码,但当前的设置不起作用。
【问题讨论】:
-
你需要在
echo之后刷新。有一个选项可以让每个echo自动刷新(atm 不记得了) -
@DarkBee 这是
ob_flush还是flush?是否必须针对每个echo(我在这个脚本中有不止一个)? -
两者,如果你愿意,你可以在
echo的服务器数量之后做到这一点:)
标签: php apache output output-buffering