我有一个用户必须在我的网站上完成的流程,这可能需要相当长的时间(在某些情况下长达一个小时)。
我希望能够让用户启动该进程,然后被告知它正在后台运行,他们可以离开页面,并在该进程完成时收到电子邮件。这将有助于避免用户不耐烦并在进程完成之前关闭窗口的情况。
理想情况下的一个示例是 Mailchimp 如何处理导入联系人。您上传联系人的 CSV 文件,然后他们会说联系人当前正在上传,但可能需要一段时间,因此请随时离开该页面。
实现这一目标的最佳方法是什么?我研究了 Gearman,但似乎该工具对于快速扩展大量任务而不是在后台运行进程更有用。
感谢您的帮助。
最佳答案
即使乍一看似乎不是您会使用的,我想我会使用 Gearman,因为:
- 当用户执行操作时,您可以将任务推送给它
- 它将处理这两个问题:
- 将任务平衡到多台服务器(如果您有多台服务器)
- 排队,因此并行执行的任务不超过 X 个。
- 无需重新发明轮子;-)
关于PHP后台进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436666/