利用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()该语句可以获取你异步请求的方法中返回的结果,手册中均有。

总结:

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

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

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

时间: 2024-11-12 05:32:30

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

利用 Python yield 创建协程将异步编程同步化

在 Lua 和 Python 等脚本语言中,经常提到一个概念: 协程.也经常会有同学对协程的概念及其作用比较疑惑,本文今天就来探讨下协程的前世今生. 首先回答一个大家最关心的问题:协程的好处是什么? 通俗易懂的回答: 让原来要使用 异步 + 回调 方式写的非人类代码,可以用看似同步的方式写出来. 1.回顾同步与异步编程 同步编程即线性化编程,代码按照既定顺序执行,上一条语句执行完才会执行下一条,否则就一直等在那里. 但是许多实际操作都是CPU 密集型任务和 IO 密集型任务,比如网络请求,此时不

【Spring学习笔记-MVC-5】利用spring MVC框架,实现ajax异步请求以及json数据的返回

作者:ssslinppp      时间:2015年5月26日 15:32:51 1. 摘要 本文讲解如何利用spring MVC框架,实现ajax异步请求以及json数据的返回. Spring MVC与json参考文章:[spring学习笔记-mvc-3]返回json数据-方式1  和 [spring学习笔记-mvc-4]返回json数据-方式2. 使用到的技术主要如下: Ajax:使用JQuery 提供的ajax:==>需要引入jquery.min.js文件: Spring MVC: Jso

【demo】自己写的一个 SpringMail 异步发送邮件的demo。 javamail 邮件异步发送

原文:[demo]自己写的一个 SpringMail 异步发送邮件的demo. javamail 邮件异步发送 源代码下载地址:http://www.zuidaima.com/share/1550463483120640.htm [demo]自己写的一个 SpringMail 异步发送邮件的demo. javamail 邮件异步发送 (注意 配置里面的账号跟发件人账号要一致) 1. 请各位在跑单元测试的时候,在 spring-mail.xml 文件中配置自己的邮箱账号和密码 (我已经注释掉了)

利用EasySQLMAIL实现自动填写Excel表格并发送邮件(2)

利用EasySQLMAIL实现自动填写Excel表格并发送邮件 转自:http://blog.sina.com.cn/s/blog_1549483b70102witg.html 前一篇博文中记录了"利用EasySQLMAIL实现自动数据提取和邮件发送功能",里面的方法只能将SQL语句查询出来的数据一行一行地原样转换到Excel表格中.但我们有一些Excel表格的样式是设计好了的,比如这种表格: 表格中的单元格都是事前设计好的.每星期都需要执行几个SQL语句,并且把SQL语句的统计结果填

pythonWeb框架flask中使用blinker信号机制解耦业务代码解决ImportError: cannot import name 'app',以异步发送邮件为例

百度了大半天,不知道怎么搞,直到学习了blinker才想到解决办法,因为之前写java都是文件分开的, 所以发送邮件业务代码也放到view里面,但是异步线程需要使用app,蛋疼的是其他模块不能从app.py导入任何变量: 即: app.py是主文件,view.py是业务文件, 我需要在view中使用app中的变量,怎么办,百度了很多,没有找到方法 这里可以用信号实现,先记录一下: python3内置了blinker,可以直接使用,首先在view里定义信号: 然后在app.py里面连接需要使用的函

利用python yielding创建协程将异步编程同步化

转自:http://www.jackyshen.com/2015/05/21/async-operations-in-form-of-sync-programming-with-python-yielding/ 目录 回顾同步与异步编程 回顾多线程编程 yield与协程 异步编程同步化 回顾同步与异步编程 同步编程即线性化编程,代码按照既定顺序执行,上一条语句执行完才会执行下一条,否则就一直等在那里.但是许多实际操作都是CPU 密集型任务和 IO 密集型任务,比如网络请求,此时不能让这些任务阻塞

利用颜色和形态学两种方法进行车牌区域提取的OpenCV代码

要想提取车牌号,首先你要定位车牌区域嘛,本文分别两种方法用,即颜色和形态学的方法,对车牌区域进行判定.说得是两种方法,其实两种方法并无多大的区别,只是有一步的判断标准不一样而已,你看了下面整理出的的思路就知道两者的区别真的很小了. 方法一:利用颜色提取车牌区域的思路: ①求得原图像的sobel边缘sobelMat ②在HSV空间内利用车牌颜色阈值对图像进行二值化处理,得到图像bw_blue→ ③由下面的判别标准得到图像bw_blue_edge for (int k = 1; k != heigh

extJs常用的四种Ajax异步提交

/** * 第一种Ajax提交方式 * 这种方式需要直接使用ext Ajax方法进行提交 * 使用这种方式,需要将待传递的参数进行封装 * @return entitySearch.firstname:document.all.firstname.value, */function saveUser_ajaxSubmit1() { Ext.Ajax.request( {  url : 'user_save.action',  method : 'post',  params : {   user

extJs常用的四种Ajax异步提交 - haiq - 博客园

/** * 第一种Ajax提交方式 * 这种方式需要直接使用ext Ajax方法进行提交 * 使用这种方式,需要将待传递的参数进行封装 * @return */ function saveUser_ajaxSubmit1() { Ext.Ajax.request( { url : 'user_save.action', method : 'post', params : { userName : document.getElementById('userName').value, passwor