PHP如何在关闭页面后停止运行

**

PHP如何在关闭页面后停止运行

最近需要写一个程序,打开浏览器时使用PHP持续发送udp消息,关闭浏览器停止发送,以下是我发送部分代码:

$interval = 10;
do{
    send_udp_message($host,$port,json_encode($clientinfo));
    sleep($interval);
}while(true);

但随之出现的问题是,打开浏览器运行30秒后死循环会自动停止,查了资料后发现这是因为PHP有一个超时的问题,具体超时问题https://www.jb51.net/article/79562.htm有详细讲解,为了解决超时问题,一般是加上set_time_limit(0);让程序一直执行下去,如果想忽略浏览器的关闭,让程序一直执行,可加上ignore_user_abort(true);忽略浏览器关闭的影响,但我只使用set_time_limit(0);,关闭浏览器后程序居然还是在一直执行!这就让我很费解了,明明说的是浏览器关闭后客户端会给服务器一个abort让php停止运行,这说明php应该还没有得到abort。
又经过各种搜索,才发现是因为我没有刷新,清楚缓存,所以php服务器的状态没有更新到接收abort的状态,需要加上flush()和ob_flush()清楚缓存区,才能更新带最新的状态。以下是最终解决后的完整代码:

do{
    flush();
    ob_flush();
    send_udp_message($host,$port,json_encode($clientinfo));
    sleep($interval);
}while(true);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值