gearman php 邮件群发,gearman初探:(三、异步发送邮件)

在发送邮件之前,先用gearman官网上的例子热热身 client.php:

$client = new GearmanClient();

$client->addServer();

echo $client->do("reverse", "Hello World!");

?>

worker.php:

$worker = new GearmanWorker();

$worker->addServer();

$worker->addFunction("reverse", function ($job) {

return strrev($job->workload());

});

while ($worker->work());

?> Client 和 Worker 都需要通过addServer函数连接到服务器上,默认主机是127.0.0.1,默认端口是4730

代码部署好之后,运行Worker

#php ./worker.php

让worker一直处于循环等待工作请求的状态

然后运行Client

#php ./client.php

这时你会看到一串被反转的hello world!    说明系统已正常工作。

我们正式使用Gearman来发送邮件,代码如下:

client.php

$client = new GearmanClient();

$client->addServer();

echo $client->do("sendmail", "Hello World!");

?>

workder.php

require_once 'mail/PHPMailerAutoload.php';

$worker = new GearmanWorker();

$worker->addServer();

$worker->addFunction("sendmail", function ($job) {

$mail = new PHPMailer;

//$mail->SMTPDebug = 3; // Enable verbose debug output

$mail->isSMTP(); // Set mailer to use SMTP

$mail->Host = 'smtp.qq.com'; // Specify main and backup SMTP servers

$mail->SMTPAuth = true; // Enable SMTP authentication

$mail->Username = 'xxxxxx@qq.com'; // SMTP username

$mail->Password = 'yyyyy'; // SMTP password

$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted

$mail->Port = 587; // TCP port to connect to

$mail->From = 'xxxxxx@qq.com';

$mail->FromName = 'Mailer';

$mail->addAddress('yyyyyyyy@gmail.com', 'Joe User'); // Add a recipient

$mail->WordWrap = 50; // Set word wrap to 50 character

$mail->isHTML(true); // Set email format to HTML

$mail->Subject = 'Here is the subject';

$mail->Body = 'This is the HTML message body in bold!';

$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {

echo 'Message could not be sent.';

echo 'Mailer Error: ' . $mail->ErrorInfo;

} else {

echo 'Message has been sent';

}

return true;

});

while ($worker->work());

?>

mail为邮件发送类库所在文件夹,注意它的位置 要让worker.php能引用到它。

运行workder.php,然后运行client.php。邮件发送出去后,worker端会收到一个成功消息。这时候你会发现client 依然是被阻塞的,要等到邮件被发送出去后才返回。那是因为client的do方法是同步的,改为doBackground就是异步的,这时发现client立即返回了,邮件放在后台发送。这样程序不必等待就可以继续往下执行,用户体验很好。

现在的client,worker和job server都在同一台机器上,如果计算任务量比较大,可以准备几台机器专门做worker,只要client和worker都能连上job server,系统就会正常运作,从而真正达到分布式异步计算的目的。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值