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