比如在页面上点击发送邮件(要发100封邮件),怎样让程序后台自动执行?点击发送邮件后,浏览器已经关闭了

解决方案 »

  1.   

    你会用linux的sendmail吗? 把sendmail配好后, 在网页上发邮件都提交到sendmail, 把网页关掉他自己也会发的。
      

  2.   


    这样啊,sendmail已经装了,但是我现在用的是smtp发的
      

  3.   

    用smtp我就不知道了, 有sendmail为什么不用!
      

  4.   

    浏览器怎样后台运行?php是基于浏览器里执行的服务端还行
      

  5.   

    你可以用数据库模拟邮件队列嘛
    比如数据库内建一个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.
      

  6.   


    谢谢,就是在linux上搞个定时任务呀,这个间隔时间不太好设,多了,用户等邮件太久,设少了,占用资源
      

  7.   

    本身发邮件就是想把邮件提交给邮件服务器(SMTP)的发送队列里头
    然后邮件服务器会按照自己的进程逐一发送邮件
    如果邮件服务器和web服务器同一台机器的话,这种提交速度非常快
    所以基本上不用担心队列的问题!
      

  8.   

    6楼的解决思路是对的做个数据库,存放临时数据点发送后,无论是直接php还是ajax,把要发送的邮件的相关信息都存进那个临时数据库然后用crontab每过一小段时间检测一次就是了,只要发现时间已到(send_time>time()),就执行发送这样做也能增加定时发送功能.
      

  9.   

    看看这个
    http://hi.baidu.com/qai41/blog/item/4a99361e51c5961341341752.html