我在一个有点大的web应用程序上工作,后端主要是PHP.代码中有几个地方我需要完成一些任务,但我不想让用户等待结果.例如,创建新帐户时,我需要向他们发送一封欢迎邮箱.但当他们点击"完成注册"按钮时,我不想让他们等到邮箱真正发送,我只想开始这个过程,并立即向用户返回一条消息.
到目前为止,在一些地方,我一直在使用感觉像是对exec()的黑客攻击.基本上是这样做的:
exec("doTask.php $arg1 $arg2 $arg3 >/dev/null 2>&1 &");
看起来很管用,但我在想是否有更好的办法.我正在考虑编写一个在MySQL表中对任务进行排队的系统,以及一个单独的长时间运行的PHP脚本,该脚本每秒查询该表一次,然后执行它找到的任何新任务.这也有一个好处,那就是如果我需要的话,将来可以在几台工人机器上分配任务.
我是在重新发明轮子吗?还有比exec()攻击或MySQL队列更好的解决方案吗?