• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

利用Http请求实现PHP异步(laravel5.4)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 前言: 继上一篇中说的第一种方法实现(自己测试用的,所以一切从简)

 

 方法的思路:

PHP本身不存在异步功能,所以我们拼接出http请求以及PHP本身自带的fsockopen、fwrite方法来实现。

 

过程: 

在Controller中创建一个方法,控制器命名为TestController,其中的代码如下(注释掉的为post请求,我们先讲get请求)

   

http_build_query 方法: 生成 URL-encode 之后的请求字符串(此处用来拼接我们Get请求所要发送的数据)。

fsockopen 方法(重点理解该方法,明白它的作用): 打开一个网络连接或者一个Unix套接字连接(此为手册中的描述并不容易理解)。第一个参数为主机名,如果你是在本地测试,可以像我一样给;第二个参数端口号:给服务器的80端口;

接下去的参数分别是一个存放错误编号的变量、一个存放错误信息字符串的变量和超时等待时间(此方法可以详细的去看手册上的描述以及百度上网友的理解分享)。该方法如果执行成功将会返回一个文件句柄(资源)

之后可以被其他文件类函数调用(例如:fgets()fgetss()fwrite()fclose()还有feof())。如果调用失败,将返回FALSE

接下来就是拼接的Get请求, 其中的Url即是该http请求请求得路径,该请求执行的方法如下,该方法向一个文件中写入拼接的字符串(此处没有贴出发送邮件的代码,只需要将此处的内容换成发送邮件以及一系列处理的代码即可)

    

在浏览器中执行第一个路由,完成后马上会看到页面显示的执行完毕,并且文件中有了写入的字符串,这表示我们的PHP异步Get请求成功了,但是使用get请求发送邮件是不合适的,因为他不能携带太多数据,而邮件的内容有可能包含大量的数据

    

所以我们还是需要使用post请求(由于本人的post请求一直不能正常执行成功,并且还未能找到原因,所以不多做阐述,解决了问题便会补上)。

 

总结:

http请求通过fsockopen打开的socket通道利用流的形式发送了请求,并在后台执行,但是这样做的弊端就是我们没办法对其进行监控,只能将想要的结果存到数据库等,然后再在其它页面查看记录的结果

以上纯属个人理解,紧当笔记使用。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
通过PHPCURL模拟请求上传文件|图片。发布时间:2022-07-10
下一篇:
linux下安装编译php的curl扩展发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap