Tag: 队列

异步运行PHP任务

我工作在一个有点大的Web应用程序,而后端主要是在PHP中。 代码中有几个地方需要完成一些任务,但我不想让用户等待结果。 例如,在创建新帐户时,我需要向他们发送一封欢迎邮件。 但是,当他们点击“完成注册”按钮时,我不想让他们等到电子邮件实际发送,我只是想启动过程,并立即返回一个消息给用户。 直到现在,在一些地方,我一直在用exec()来进行攻击。 基本上做这样的事情: exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &"); 这似乎工作,但我想知道如果有更好的办法。 我正在考虑编写一个在MySQL表中排队任务的系统,以及一个单独的长时间运行的PHP脚本,每秒查询一次这个表,并执行它找到的任何新任务。 如果需要的话,这也可以让我在未来的几个工人机器之间分配任务。 我正在重新发明轮子吗? 有没有比exec()黑客或MySQL队列更好的解决方案?