前言:目前在做的项目中存在一个邮件发送的功能,并且存在群发的情况,记录下实现的过程
邮件发送初体验:
开发的项目中碰到了一个需要发送邮件的功能,并且可能同时发送给多个人,想想好像没有什么不对,巴拉巴拉一下开发完了,用了循环发送邮件,嗯。。。就是用的循环!
写完了以后突然想到一个问题,如果要同时发一百封邮件,那我这样写发送邮件的人不是要等很久才能接收到发送成功的提示,因为PHP是单线程的啊,他要发完一条返回再发下一条。
然后我就明白了,我这样写不能说有错,但是很显然对于用户啊来说是不友好的,甚至不合理的,于是开启了探寻之路。
PHP异步:
想到这个问题以后,在网上找了下,发现可以使用PHP异步来实现,经过了一番查询,有两种实现方法(均为异步)
①. 创建一个新的进程,将发送邮件有关的一系列操作放在该进程中实现,发送者点击按钮触发的进程照常返回,可继续进行其它操作,此时邮件正在后台的另一个进程中默默发送。
②. 使用循环,假设一百封邮件,则每次循环只会触发邮件开始发送,并不会等待上一封邮件的返回,一百封邮件的发送在循环结束后,就已经都在发送,但是必须等到一百个发送邮件的请求都返回后,此进程才可以结束(此方法使用GUZZLE实现)。
下一篇博文将会正式开始记录第一种实现方法