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