利用Guzzle实现另一种PHP异步发送邮件(laravel5.4)

Posted 愤怒的白炽灯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用Guzzle实现另一种PHP异步发送邮件(laravel5.4)相关的知识,希望对你有一定的参考价值。

前言:第二种实现方法

 

方法的思路:

此方法的实现需要借助Guzzle这个php的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上(laravel中如何引入guzzle不多说)

使用该方法所实现的异步为让发送邮件的请求在不需要等待回应的情况下都发出,即只要循环触发方法,分开发送,分开响应,可以监控,

guzzle中文文档: http://guzzle-cn.readthedocs.io/zh_CN/latest/quickstart.html

 

过程:

该方法为邮件内容处理,然后调用了doThread方法(自己写的方法),此方法为开始异步的方法,第一个参数为url,即异步请求的路由;第二个从参数为一个回调函数,此处我用来记录邮件发送后请求失败或者成功

接下来介绍doThread方法,此方法即为异步请求的地方,此处调用的方法均为Guzzle中的方法,所以本篇博文的重点其实是看明白Guzzle的手册

最后就是异步请求给定的路由连接实现发送邮件,在我的回调函数当中可以分别记录下发送成功或者失败

顺便说一下$response->getbody()->getContents()该语句可以获取你异步请求的方法中返回的结果,手册中均有。

 

总结:

该方法还是要必须等待所有的邮件都发送完成返回才能进行其他操作,所以等于发送邮件的实现还是占用了主进程,只是我们变着法子让处理的时间变到了最短。

但是我仍然觉得这样的方法在请求达到一定的数量以后还是需要较长时间的等待,并不友好。

最后学会看手册真的很重要,手册里面都写着呢。

 

以上是关于利用Guzzle实现另一种PHP异步发送邮件(laravel5.4)的主要内容,如果未能解决你的问题,请参考以下文章

PHP 使用 Guzzle 执行 HTTP 请求

PHP Guzzle接口请求库应用

PHP利用fastcgi_finish_request()函数实现异步操作,提高响应速度

TP5实现邮件发送(PHP 利用QQ邮箱发送邮件「PHPMailer」)

mailgun php 邮件发送 实例

PHP中实现异步调用多线程程序代码