php异步方案,php 伪异步执行实现方法

需求描述:

客户端访问php文件,php需要做某个耗时的操作。

例如:访问远程接口数据 而客户端不需耗时操作的结果只期望快速得到输出.

php本身是不支持异步操作的,可以用子进程的方式模拟异步操作执行,但实现起来比较复杂而且只支持linux平台。

本节分享一个简单的伪异步执行方案:

利用http的特性,强制输出 connection close的header,让浏览器认为服务端已经执行完毕,从而直接断开链接显示出结果。

例子,php异步执行实例代码。

复制代码 代码示例:

ignore_user_abort();  //保证客户端断开连接后程序依然正常执行

ob_start();  //开启输出缓冲  header可以在输出之后执行

header('Connection: close');  //输出header

echo('test');  //输出内容

$size = ob_get_length();

header("Content-Length: $size");

ob_end_flush(); //输出缓冲

flush(); //输出缓冲

foreach($i=0;$i<5;$i++)

file_get_contents("http://www.jbxue.com");//执行 耗时操作

?>

代码说明:

用循环抓取5次百度的首页来模拟耗时的操作。

执行之后,浏览器几乎瞬间显示出服务端的输出test。

而且不会显示页面一直在加载中的状态,也就是服务端先把输出结果返回给客户端,客户端不用再等待,循环5次,抓取脚本学堂首页的代码执行完才能看到结果。

以上通过一个变通的办法,实现了php代码的异步执行,确实不错,值得学习参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值