PHP即时实时输出内容

Posted 七月流火

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP即时实时输出内容相关的知识,希望对你有一定的参考价值。

一般情况下,php都是将整个页面全部执行完成后,才会把要输出的内容发送回客户端。

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

这段代码会在十秒后输出“-12345678910”,

如果要实现每秒实时输出一位可用以下两种方式:

第一种

设置执行时间不限时

set_time_limit(0);

清除并关闭缓冲,输出到浏览器之前使用这个函数。

ob_end_clean();

控制隐式缓冲泻出,默认off,打开时,对每个 print/echo 或者输出命令的结果都发送到浏览器。

ob_implicit_flush(1);

<?php
ob_end_clean();
ob_implicit_flush(1);
for ($i=0; $i < 10 ; $i++) { 
    echo $i;
    //浏览器需要凑够一定的字节数才会输出
    echo str_repeat ( " " , 1024 ) ;
    sleep(1);
}

第二种

ob_*系列函数, 是操作PHP本身的输出缓冲区.

ob_flush()

flush, 严格来讲, 这个只有在PHP做为apache的Module(handler或者filter)安装的时候, 才有实际作用.

它是刷新WebServer(可以认为特指apache)的缓冲区.

前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器。

flush()

for ($i=0; $i < 10 ; $i++) { 
    echo $i;
    echo str_repeat ( " " , 1024 ) ;
     ob_flush ( ) ;
     flush ( ) ;
    sleep(1);
}

参考:

深入理解ob_flush和flush的区别

以上是关于PHP即时实时输出内容的主要内容,如果未能解决你的问题,请参考以下文章

php Yoast SEO规范输出的代码片段

如何在发生时从 php 获取实时输出?

php 在Yoast SEO中更改或删除OpenGraph输出的代码片段。此代码中有多个代码段。

php 一个短代码片段准备在WooCommerce Thank You页面上输出货件跟踪UI。

php即时聊天源码哪家厂商有?

php即时通讯是怎么搭建的?有没有知道的?