使用nohup来发送注册验证邮件

场景:用户输入注册信息,然后点击提交。网站需要用户验证邮箱,但是我们的SMTP服务器(smtpcloud.sohu.com)没有毫秒级的响应速度。所以要放到数据库,然后一封一封的发。
因为定时任务最快的频率是一分钟执行一次,但是你肯定不想用户等待一分钟吧。找了很多地方找到了,看到了张宴的HTTPSQS,里面提到了守护进程,找到了nohup。

执行一个nohup,每隔10S中来查询一次数据库,看有没有验证邮件要发,有的话就发出去。
其中mysql用到了pconnect,但是不清楚pconnect能支持多久,所以我就做了一个两个shell,一个是关闭nohup,一个是开启nohup。
流程是这样的:

第一次手动执行 ./start_send_mail_nohup.sh
添加定时任务凌晨6点执行 ./stop_send_mail_nohup.sh
添加定时任务凌晨6点01分执行 ./start_send_mail_nohup.sh

这样用户注册完了,差不多10s左右就可以收到验证邮件。

./start_send_mail_nohup.sh

#!/bin/sh
nohup php /home/wwwroot/web13.com/test/send_mail.php &
echo "$!" > /home/wwwroot/web13.com/test/nohuppid

./stop_send_mail_nohup.sh

#!/bin/sh
pid=`cat /home/wwwroot/web13.com/test/nohuppid`;
#echo $pid
kill $pid

参考:http://zyan.cc/httpsqs/ http://www.williamlong.info/archives/482.html

Related posts:

Leave a Reply

Your email address will not be published.