加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 为什么echo不能在do while循环中工作,甚至在ignore_user_

发布时间:2020-12-13 22:46:47 所属栏目:PHP教程 来源:网络整理
导读:我使用日志打印机测试以查看ignore_user_abort是否有效,确实如此.然而,回声不想工作.回声仅在循环完成时才起作用吗? ?phpignore_user_abort(1); // run script in background set_time_limit(0); // run script forever $interval=2; // do every 2 sec...
我使用日志打印机测试以查看ignore_user_abort是否有效,确实如此.然而,回声不想工作.回声仅在循环完成时才起作用吗?

<?php
ignore_user_abort(1); // run script in background 
set_time_limit(0); // run script forever 
$interval=2; // do every 2 sec... 
$i=0;
 $lastRunLog = 'lastrun.log';
do{ 
   // add the script that has to be ran every 2 sec here 
   // ... 
   echo 'Test: '.$i;

   file_put_contents($lastRunLog,time());


   sleep($interval); // wait 2 sec 
   $i=$i+1;
}while(true); 
?>

解决方法

是的,不.

您需要担心三个输出缓冲区:

> PHP可以缓冲输出.您可以使用ob_ functions控制该缓冲区并强制输出到apache / iis(Web服务器)
> Apache / IIS有自己的缓冲区,只有在认为有足够的信息发送时才会发送信息.这也可以通过mod_gzip或其他压缩来实现.你无法通过PHP控制它.
>浏览器和服务器之间还可能存在其他缓存/代理.这些可能会保持输出直到它收到完整的响应.

因此,echo立即放入PHP缓冲区.您可以将缓冲区发送到网络服务器,但之后它就会失控.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读