就是会员注册之后发邮件的情况。
我这里写了函数,就是注册最后一步里加了发邮件的方法。
但是发现发邮件很耗时间。
所以我把这两个分为两个函数了。
我想问的是。如果用异步的方式,用户注册之后跳到该跳的页面的同时,不影响用户的情况下执行发邮件函数。

解决方案 »

  1.   

    用ajax在注册完成之后执行发送邮件的请求!你想跳哪都无关紧要了!我这边站点就是这么做的!
      

  2.   

    当然异步执行还有其他方法!
    比如说pcntl_fork()产生分进程去处理你的邮件发送工作!
    相对起来还是前端的ajax来的方便!
      

  3.   

    两次AJAX请求 直接返回 不等回调
      

  4.   

    对的!后台跑个脚本,一直扫数据库里新注册的用户再发送邮件.
    下面是我手头上一个项目里的后台发送邮件的部分代码class Cmail extends Daemon
    {
        
        
        /**
         * 继承父类Demon的抽象方法work()(必须)
         *
         */
        
        public function work ()
        {
            global $_db_mail;
            $_db_mail->query("update mail_queue set email_status='sending' limit 10");
            $qid = $_db_mail->query("select * from mail_queue where email_status='sending'");
            $mms = $_db_mail->fetch_array($qid);
            $send_mail_nums = 0;
            $single = dirname(__FILE__).'/cmail-single.php';
            foreach ($mms as $item)
            {
                shell_exec("/usr/local/webserver/php/bin/php {$single} {$item['enter_time']} {$item['id']} {$item['email_tab']}");
                $send_mail_nums ++;
            }
            
            /****必须对例程行为进行最后描述(比如操作了多少条数据)****/
            $this->taskinfo = "启动邮件队列:产生{$send_mail_nums}条分进程";
            
        }
        
    }$cmail_obj = new Cmail('cmail',10);