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