资讯专栏INFORMATION COLUMN

PHP执行耗时脚本实时输出内容

cgspine / 2311人阅读

摘要:我们有时候会有这样一个需求,当执行耗时脚本时,会执行完这个脚本才会输出数据,如果没有处理完,它会将输出到页面的内容缓存到内存中,等处理完后才执行,这里,我们需要实时输出。

我们有时候会有这样一个需求,当执行耗时脚本时,会执行完这个脚本才会输出数据,如果没有处理完,它会将输出到页面的内容缓存到内存中,等处理完后才执行,这里,我们需要实时输出。

flush — 刷新输出缓冲

刷新PHP程序的缓冲,而不论PHP执行在何种情况下(CGI ,web服务器等等)。该函数将当前为止程序的所有输出发送到用户的浏览器。

flush() 函数不会对服务器或客户端浏览器的缓存模式产生影响。因此,必须同时使用 ob_flush() 和 flush() 函数来刷新输出缓冲。

个别web服务器程序,特别是Win32下的web服务器程序,在发送结果到浏览器之前,仍然会缓存脚本的输出,直到程序结束为止。

有些Apache的模块,比如mod_gzip,可能自己进行输出缓存,这将导致flush()函数产生的结果不会立即被发送到客户端浏览器。

甚至浏览器也会在显示之前,缓存接收到的内容。例如 Netscape 浏览器会在接受到换行或 html 标记的开头之前缓存内容,并且在接受到 标记之前,不会显示出整个表格。

一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面,所以必须发送一些额外的空格来让这些浏览器显示页面内容。

如果需要实时输出,则需要两个核心函数ob_flush, flush;

 Line to show.";
    echo str_pad("",4096)."
";

    ob_flush();
    flush();
    sleep(2);
}

echo "Done.";

ob_end_flush();

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/25794.html

相关文章

  • PHP 进程的实现与管理

    摘要:运行模式实现进程前,需了解常见的的运行模式通用网关接口模式模式命令行模式模块模式作为服务器模块而进程则是使用命令行模式运行的基本实现中提供了一个扩展,可以利用操作系统的调用来实现多进程。 应用场景 一些耗时任务: 大数据表分表后的统计信息功能 分批发送短信或邮件功能 其他可分目标的任务功能(很多种) 所以我们就需要一个常驻内存的任务管理工具,为了保证实时性,一方面我们让它一直执行任...

    MockingBird 评论0 收藏0
  • PHP 进程的实现与管理

    摘要:运行模式实现进程前,需了解常见的的运行模式通用网关接口模式模式命令行模式模块模式作为服务器模块而进程则是使用命令行模式运行的基本实现中提供了一个扩展,可以利用操作系统的调用来实现多进程。 应用场景 一些耗时任务: 大数据表分表后的统计信息功能 分批发送短信或邮件功能 其他可分目标的任务功能(很多种) 所以我们就需要一个常驻内存的任务管理工具,为了保证实时性,一方面我们让它一直执行任...

    testbird 评论0 收藏0
  • XXL-JOB v2.0.2,分布式任务调度平台

    摘要:底层通讯方案优化升级较新版本,由方案调整为方案,执行器内嵌提供服务,调度中心复用容器端口提供服务任务告警逻辑调整,改为通过扫描失败日志方式触发。 v2.0.2 Release Notes 1、底层通讯方案优化:升级较新版本xxl-rpc,由JETTY方案调整为NETTY_HTTP方案,执行器内嵌netty-http-server提供服务,调度中心复用容器端口提供服务; 2、任务告警逻...

    lily_wang 评论0 收藏0
  • Java,console输出实时的转向GUI textbox

    摘要:下面这句话会转向中输出实时输出问题方法,本质上是多线程的更新内容。在处理上的点击事件时,事件处理返回之前,其他事件是不能触发的,界面类似于卡住的状况。因此,在点击事件结束后,更新内容的线程才能运行,这样的效果是内容输出是非实时的。 1 简单入门例子   入门例子是从参考文献2与3中粘过来的内容。  在Swing中,如果需要重定向System.err和System.out到一个JText...

    ivydom 评论0 收藏0

发表评论

0条评论

cgspine

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<