php - Web 服务器是否可以响应具有延长时间的输出流的 HTTP 请求?

标签 php apache http stdout

当您在控制台中运行 PHP 脚本时,该脚本的所有标准输出文本都会在脚本运行时显示在控制台窗口中。当运行冗长的 PHP 脚本时,浏览器窗口是否可以类似地接收浏览器中的状态报告,而不是在脚本结束时转储所有输出?

最佳答案

是的。只需定期调用flush()和ob_flush()即可。至少每 120 秒写入一些输出以保持与浏览器的连接非常重要。

一个粗略的例子:

    while(!$done) {
        //doWork();
        echo number_format(100 * ($workDone/$workTotal)) . "% ";
        flush();
        ob_flush();
    }

编辑:这是在我的环境中有效的任意概念证明:

print('hello');
print(str_repeat(".\n", 2048));
flush();
//this might be a safe way to only flush the buffer if necessary?
if(ob_get_length())
    ob_flush();
sleep(60);

关于php - Web 服务器是否可以响应具有延长时间的输出流的 HTTP 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5709462/

相关文章:

apache - 如何使用 mod_rewrite 在内部重写/到/homepage

iOS:队列 HTTP 调用

php - 如何在 codeigniter 中更新表而不重复

PHP:调用未定义的函数 gzdecode()

php - CakePHP - 错误 : SQLSTATE[HY000]: General error: 1364 Field 'title'

php - 检查字符串是否包含来自数据库的短语

java - Android & Apache 发送和接收多张图片

如果不弃用 ADMIN_MEDIA_PREFIX,则无法访问 Django 管理 CSS 文件

http - 临时维护页面的最佳实践方法和状态代码是什么?

C#/Winform : Enter data into HTML page, 提交表单