php - 这段代码,为什么时间不能依次同步更新,而要等到循环结束后才更新?求解决方法
高洛峰
高洛峰 2017-04-11 09:45:01
[PHP讨论组]
<?php

header('Content-Type:text/event-stream');

for($i = 0; $i<100;$i++){
    date_default_timezone_set("Asia/Shanghai");
    echo "event:newDate\n";
    echo 'data:'.date('Y-m-d H-i-s');
    echo "\n\n";
    flush();
    sleep(1);
}
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
高洛峰

关键命令

需要关闭输出缓存,并开启绝对输出(每次有输出内容时便执行一次输出动作)

  • ob_end_clean() 关闭输出缓存

  • ob_implicit_flush(1) 开启绝对输出

另外,你这个脚本执行时间长,应防止超时,建议:

  • set_time_limit(0)

实例

header('Content-Type:text/event-stream');

set_time_limit(0);
ob_end_clean();
ob_implicit_flush(1);
for($i = 0; $i<100;$i++){
    date_default_timezone_set("Asia/Shanghai");
    echo "event:newDate\n";
    echo 'data:'.date('Y-m-d H-i-s');
    echo "\n\n";
    sleep(1);
}
大家讲道理

在flush()前面加上ob_flush()即可

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号