位置: 编程技术 - 正文

详解PHP实现异步调用的4种方法(php yield 异步)

编辑:rootadmin

推荐整理分享详解PHP实现异步调用的4种方法(php yield 异步),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:详解php实现异步功能,php yield 异步,php异步请求方式,详解php实现异步传输,详解php实现异步功能,php如何实现异步,详解php实现异步传输,详解php实现异步操作,内容如对您有帮助,希望把文章链接给更多的朋友!

浏览器和服务器之间是通过 HTTP 协议进行连接通讯的。这是一种基于请求和响应模型的协议。浏览器通过 URL 向服务器发起请求,Web 服务器接收到请求,执行一段程序,然后做出响应,发送相应的html代码给客户端。

这就有了一个问题,Web 服务器执行一段程序,可能几毫秒就完成,也可能几分钟都完不成。如果程序执行缓慢,用户可能没有耐心等下去,就关闭浏览器了。

而有的时候,我们更本不关心这些耗时的脚本的返回结果,但却还要等他执行完返回,才能继续下一步。那么有没有什么办法,只是简单的触发调用这些耗时的脚本然后就继续下一步,让这些耗时的脚本在服务端慢慢执行?

详解PHP实现异步调用的4种方法(php yield 异步)

经过试验,总结出来几种方法,和大家share:

1. 最简单的办法,就是在返回给客户端的HTML代码中,嵌入AJAX调用,或者,嵌入一个img标签,src指向要执行的耗时脚本。这种方法最简单,也最快。服务器端不用做任何的调用。但是缺点是,一般来说Ajax都应该在onLoad以后触发,也就是说,用户点开页面后,就关闭,那就不会触发我们的后台脚本了。而使用img标签的话,这种方式不能称为严格意义上的异步执行。用户浏览器会长时间等待php脚本的执行完成,也就是用户浏览器的状态栏一直显示还在load。当然,还可以使用其他的类似原理的方法,比如script标签等等。

2. popen()

所以可以通过调用它,但忽略它的输出。

pclose(popen("/home/xinchen/backend.php &", 'r'));这个方法避免了第一个方法的缺点,并且也很快。但是问题是,这种方法不能通过HTTP协议请求另外的一个WebService,只能执行本地的脚本文件。并且只能单向打开,无法穿大量参数给被调用脚本。并且如果,访问量很高的时候,会产生大量的进程。如果使用到了外部资源,还要自己考虑竞争。

3. 使用CURL这个方法,设置CUROPT_TIMEOUT为1(最小为1,郁闷)。也就是说,客户端至少必须等待1秒钟。

4. 使用fsockopen这个方法应该是最完美的,但是缺点是,你需要自己拼出HTTP的header部分。

所以,总体来看,最好用,最简单的还是第一种方法。最完美的应该是最后一种,但是比较复杂。

标签: php yield 异步

本文链接地址:https://www.jiuchutong.com/biancheng/292448.html 转载请保留说明!

上一篇:7种php基本排序实现方法(php排行)

下一篇:php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)(php正则表达式验证用户名)

  • 税控盘开票软件访问数据库错误
  • 采购材料的进项税
  • 税后净营业利润和净利润的区别
  • 复合计征消费税例题
  • 企业税负怎么算
  • 非居民个人如何认定
  • 按差额缴纳增值税
  • 销售货物应税劳务服务清单给客户一份是不是就可以了
  • 资产负债表的货币资金根据什么填
  • 出口退税网上服务中心app
  • 资产负债表本期盈余为什么是负数
  • 资产负债表月报期末余额怎么填
  • 税票抵扣是用进项票还是销项票
  • 5附加税政策优惠退税需要哪些资料
  • 企业将重组债务转为权益工具
  • 固定资产大修理支出标准
  • 什么发票可以冲销
  • 发票领用簿怎么领发票
  • 公司购买的二手车如何计提折旧
  • 公允价值变动损益借贷方向
  • 购买资产佣金应该怎么算
  • 开专票都需要什么资料
  • 工资代扣款项是什么意思
  • 公益性捐赠纳税调整案例
  • 什么时候编制原始凭证分割单?
  • 票据追索权向谁追索
  • 小规模纳税人怎么算税
  • 认证后的发票可以留抵下月抵扣吗
  • 土地使用税与房产税的区别
  • 关于330技术维护费
  • 增值税怎么转
  • 有销项没有进项怎么结算成本
  • 租个人房屋办公怎么租
  • 联想怎么进入bios设置u盘启动
  • w7防火怎么开
  • gitlab shell
  • npfmntor.exe - npfmntor是什么进程 有什么用
  • Maximum call stack size exceeded错误
  • 瑞士伯尔尼小镇
  • 什么是民办非企业属于民营经济吗
  • AttributeError: ‘bytes‘ object has no attribute ‘encode‘异常解决方案
  • 基于php的系统
  • 融资租赁租入固定资产是什么意思
  • 一般人转小规模政策文号
  • 申报水利基金的流程
  • 织梦是什么框架开发的
  • 宝塔面板在哪
  • 理财产品分红和收益比例
  • 金税盘维护费抵税会计分录
  • 制单和审单的依据是什么
  • 进口ddp税款如何缴纳
  • 增值税发票税率计算公式
  • 事业单位扶贫费用怎么做账
  • 收履约保证金的会计分录
  • 租车费报销管理规定
  • 其他货币资金微信和支付宝的管理
  • 增值税其他免税销售额
  • 什么情况下需要打狂犬疫苗
  • 机票 进项抵扣
  • 最新职工福利费列支范围
  • 存货盘亏进项税额转出会计分录
  • 外商投资企业和外商独资企业
  • MAC怎么将单独一个应用静音
  • win10系统应用和浏览器控制需要启用吗
  • centos7怎么配置
  • win8开机进入开始界面
  • linux系统获取dhcp地址
  • 清除文件内容 linux
  • Ubuntu14.04 GLUT的安装
  • angular动态生成表单
  • jquery获取当前对象
  • js调用图片代码
  • Drag and drop in unity
  • javascript快速入门
  • 原生js实现移动站点头部搜索栏背景色透明度变化
  • android注入so
  • 购买的环保设备未使用检察建议
  • 广东省电子税务局网上办税大厅
  • 江苏省定额规则
  • 国家税务局河北省税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设