当前位置: 首页 > 面试题库 >

即使在Nginx中也可以使用PHP Flush

沈思博
2023-03-14
问题内容

是否可以在每次执行循环时回显?例如:

foreach(range(1,9) as $n){
    echo $n."\n";
    sleep(1);
}

我不想看到循环结束时打印所有内容,而是希望它每次都打印每个结果。


问题答案:

最终解决方案

这就是我发现的:

Flush在Apache的mod_gzip或Nginx的gzip下不起作用,因为从逻辑上讲,它正在对内容进行gzip处理,并且这样做必须缓冲内容才能对其进行gzip处理。任何类型的Web服务器gzip压缩都会影响此。简而言之,在服务器端,我们需要禁用gzip并减小fastcgi缓冲区的大小。所以:

  • 在php.ini中:

。output_buffering =关

。zlib.output_compression =关闭

  • 在nginx.conf中:

。gzip关闭;

。proxy_buffering关闭;

还要准备以下这行代码,特别是在您没有php.ini权限的情况下:

  • @ini_set(’zlib.output_compression’,0);

  • @ini_set(’implicit_flush’,1);

  • @ob_end_clean();

  • set_time_limit(0);

最后,如果有的话,将代码注释如下:

  • ob_start(’ob_gzhandler’);

  • ob_flush();

PHP测试代码:

ob_implicit_flush(1);

for($i=0; $i<10; $i++){
    echo $i;

    //this is for the buffer achieve the minimum size in order to flush data
    echo str_repeat(' ',1024*64);

    sleep(1);
}


 类似资料:
  • 问题内容: 对Swift来说还是很新的。我来自Android背景,那里有BroadcastReceiver,即使该应用未运行,它也可以将位置信息传递给服务。 所以我在iOS / Swift中寻找类似的东西,看来以前不可能,但现在可能会。我正在为iOS 10开发,但是如果它向后兼容,那就太好了。 我发现 我可以执行此操作以开始提供位置更新,尽管这会引起一些问题。一旦我打电话给我并且我的应用程序没有运

  • 问题内容: 我有一个映射到国家/地区实体的userAccount实体。UserAccount类中的国家/地区映射是这样的 即使将fetchmode定义为Join,hibernate也会触发单独的SQL Select来提取国家/地区。 问题答案: 删除。渴望获取将触发级联选择语句。

  • 问题内容: 我有一个处理发送确认电子邮件的PHP文件。我还有一个日历,可以使用AJAX进行各种更新。当AJAX调用更新文件时,它将使用新信息更新数据库,并且我希望发送确认电子邮件。 因此,从AJAX调用的php文件内部,我认为应该调用哪个电子邮件php页面,并带有$ _GET变量来告诉它发送哪些电子邮件以及向谁发送电子邮件。 但是由于某些原因,当您使用附加到字符串的$ _GET对时,我无法使包含起

  • 问题内容: 我有一个带glassfish 3.1 + JSF for jasperreport 4.0.1的EJB站点。该网站在流式pdf上没有问题,但是在使用runReportToPdfStream打印PDF时会生成空白PDF,以下是代码段: EJB test.jrxml- 没有SQL连接的简单报告 在JSF上生成此报告时,在glassfish中没有错误日志,但是只显示了空白PDF。请帮助,让我

  • 我正在创建一个如下所示的JobDetail,

  • 在程序中, 给出错误- 在其他线程之后,我将JDK遵从性级别更改为1.7,还添加了 java.home=/home/user/jdk1.7.0_79/JRE java.library.path=/home/user/jdk1.7.0_79/jre/lib/i386/server:/home/user/jdk1.7.0_79/jre/lib/i386:/home/user/jdk1.7.0_79/j