PHP异步执行程序的问题 比如在页面上点击发送邮件(要发100封邮件),怎样让程序后台自动执行?点击发送邮件后,浏览器已经关闭了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你会用linux的sendmail吗? 把sendmail配好后, 在网页上发邮件都提交到sendmail, 把网页关掉他自己也会发的。 这样啊,sendmail已经装了,但是我现在用的是smtp发的 用smtp我就不知道了, 有sendmail为什么不用! 浏览器怎样后台运行?php是基于浏览器里执行的服务端还行 你可以用数据库模拟邮件队列嘛比如数据库内建一个mail_send表,内有字段to_email,to_name,from_email,from_name,subject,body,issend ...其中issend字段,1表示此封邮件已经发送过,0表示未发送过,你点击页面上的按钮,实际上只是将邮件信息入库,并将字段issend置为0,表示等待后台的定时器发送。然后后台shell写个php读mail_send表中issend为0的纪录,发送。。每封邮件间隔1秒都行(sleep(1)),可有效防止被目标邮箱丢入垃圾箱。把这个php文件丢入定时器crontab,每隔一段时间就执行一次,这个看你需要了。哦,还要注意搞个信号量,比如往某个文件写入1,表示邮件发送处理正在进行中,如果此时新的邮件发送定时进程再次被触发,则理应立即结束,让上次发送邮件的进程继续执行下去,执行完后把某个文件的值改成0,表示另一定时进程可再次读mail_send表,发email. 谢谢,就是在linux上搞个定时任务呀,这个间隔时间不太好设,多了,用户等邮件太久,设少了,占用资源 本身发邮件就是想把邮件提交给邮件服务器(SMTP)的发送队列里头然后邮件服务器会按照自己的进程逐一发送邮件如果邮件服务器和web服务器同一台机器的话,这种提交速度非常快所以基本上不用担心队列的问题! 6楼的解决思路是对的做个数据库,存放临时数据点发送后,无论是直接php还是ajax,把要发送的邮件的相关信息都存进那个临时数据库然后用crontab每过一小段时间检测一次就是了,只要发现时间已到(send_time>time()),就执行发送这样做也能增加定时发送功能. 看看这个http://hi.baidu.com/qai41/blog/item/4a99361e51c5961341341752.html 求助:用PHP写的一个过期会员清理工具 运行很慢 PHP连接数据库问题 PHP 如何忽略某个函数抛出来的警告 url参数传递和获取? linux下安装mysql的问题 正值表达式验证以零开头的四位数 遇见一个GET参数问题!请求帮助,急急在先等到100分!!! Call to undefined function mysql_connect()的问题 如何启用COM? 为什么可以跳过登录? js怎么获取数组的值 第十行变量错误
这样啊,sendmail已经装了,但是我现在用的是smtp发的
比如数据库内建一个mail_send表,内有字段to_email,to_name,from_email,from_name,subject,body,issend ...
其中issend字段,1表示此封邮件已经发送过,0表示未发送过,你点击页面上的按钮,实际上只是将邮件信息入库,并将字段issend置为0,表示等待后台的定时器发送。
然后后台shell写个php读mail_send表中issend为0的纪录,发送。。每封邮件间隔1秒都行(sleep(1)),可有效防止被目标邮箱丢入垃圾箱。
把这个php文件丢入定时器crontab,每隔一段时间就执行一次,这个看你需要了。
哦,还要注意搞个信号量,比如往某个文件写入1,表示邮件发送处理正在进行中,如果此时新的邮件发送定时进程再次被触发,则理应立即结束,让上次发送邮件的进程继续执行下去,执行完后把某个文件的值改成0,表示另一定时进程可再次读mail_send表,发email.
谢谢,就是在linux上搞个定时任务呀,这个间隔时间不太好设,多了,用户等邮件太久,设少了,占用资源
然后邮件服务器会按照自己的进程逐一发送邮件
如果邮件服务器和web服务器同一台机器的话,这种提交速度非常快
所以基本上不用担心队列的问题!
http://hi.baidu.com/qai41/blog/item/4a99361e51c5961341341752.html