4

我一直在尝试按需将某些脚本的输出刷新到浏览器,但它们在我们的生产服务器上不起作用。

例如,我尝试运行“Phoca 更改排序工具”(在 Google 上找到),在脚本完成执行之前我看不到任何输出。

我已经尝试立即刷新其他脚本上的缓冲区,该脚本在任何服务器上都可以正常工作,但这个使用以下代码:

echo "something";
ob_flush();
flush();

设置“ob_implicit_flush(1);” 也无济于事。

服务器是 Apache 2.2.21,在 Linux 上运行 PHP 5.2.17。如果有帮助,您可以在此处查看我们的 php.ini 文件: http ://www.smallfiles.org/download/1123/php.ini.html

这不是我们在服务器忽略脚本指令时遇到的唯一问题。服务器也会忽略超时编码,例如:

ini_set('max_execution_time', 900*60);

set_time_limit(86400);

脚本总是在 php.ini 默认值下超时。

在 IE 或 Firefox 中执行脚本似乎无关紧要。

4

2 回答 2

1

解开了这个谜团。两个都。

为了解决输出缓冲区问题,我需要关闭 .htaccess 文件中的 gzip 压缩,但我希望我可以在脚本中执行此操作。

以下是您应该在 .htaccess 文件中放入的内容:

<IfModule mod_gzip.c>
    mod_gzip_on  No
</IfModule>

SetEnv no-gzip dont-vary

为了修复脚本终止而没有错误,我检查了我的 Apache 日志文件,发现它不是 PHP,而是在 Apache 配置中:指定的超时已过期:ap_content_length_filter:apr_bucket_read() failed

必须增加 Apache 超时以防止此错误使我的脚本看起来像超时。在 Apache 中启用 KeepAlive 也有助于一劳永逸地解决这个问题。

希望这对某人有所帮助,并感谢其他所有人的帮助!

于 2012-07-14T19:23:00.040 回答
0

您可能正在加载不正确的php.ini文件,因为它往往会根据目录而变化。

要检查您加载的php.ini文件,请写入:echo php_ini_loaded_file();,这将为您提供它所在的目录。请参阅php.net

如果失败,请参阅serverfault.com以获取服务器 stackexchange 站点。

于 2012-07-04T08:29:19.333 回答