如何用异步方式执行函数?

张小莱 2010-11-17 02:29:48
就是会员注册之后发邮件的情况。
我这里写了函数,就是注册最后一步里加了发邮件的方法。
但是发现发邮件很耗时间。
所以我把这两个分为两个函数了。
我想问的是。如果用异步的方式,用户注册之后跳到该跳的页面的同时,不影响用户的情况下执行发邮件函数。
...全文
153 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
在-云端 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 amani11 的回复:]

可以考虑,将待发邮件信息存在一表中【邮件有关的信息,以及优先级等】

定时执行一发送邮件程序
==========================
如果用来认证用户
还可以考虑加一个定时收邮件程序,没有收到邮件的用户,往指定邮箱发一封信,抓取地址后,认证该用户
[/Quote]


对的!后台跑个脚本,一直扫数据库里新注册的用户再发送邮件.
下面是我手头上一个项目里的后台发送邮件的部分代码



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);


君望永远 2010-11-17
  • 打赏
  • 举报
回复
两次AJAX请求 直接返回 不等回调
君望永远 2010-11-17
  • 打赏
  • 举报
回复
异步,定时计划?
在-云端 2010-11-17
  • 打赏
  • 举报
回复
当然异步执行还有其他方法!
比如说pcntl_fork()产生分进程去处理你的邮件发送工作!
相对起来还是前端的ajax来的方便!
amani11 2010-11-17
  • 打赏
  • 举报
回复
可以考虑,将待发邮件信息存在一表中【邮件有关的信息,以及优先级等】

定时执行一发送邮件程序
==========================
如果用来认证用户
还可以考虑加一个定时收邮件程序,没有收到邮件的用户,往指定邮箱发一封信,抓取地址后,认证该用户
在-云端 2010-11-17
  • 打赏
  • 举报
回复
用ajax在注册完成之后执行发送邮件的请求!你想跳哪都无关紧要了!

我这边站点就是这么做的!
CunningBoy 2010-11-17
  • 打赏
  • 举报
回复
Ajax提交请求给php

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧