PHP:如何运行与主进程分开的进程

时间:2012-04-02 05:13:15

标签: php cakephp-1.3

我有一个从excel导入数据到数据库的功能,我让这个功能在服务器上运行所以这个功能不需要再与客户端交互了,客户端web浏览器只需要将excel文件上传到服务器,之后,任务将在服务器上运行,所以如果浏览器被客户端关闭,该功能仍然在服务器上运行,我有这个,问题是,当浏览器由客户端打开时,浏览器将加载为只要该功能仍然有效。如何使浏览器不等待服务器响应,以便在服务器上运行进程时浏览器不会加载。请帮助我。

3 个答案:

答案 0 :(得分:2)

使用message queue将处理文件的任务从Web服务器卸载到另一台单独运行的守护程序。

答案 1 :(得分:0)

您可以在命令行中exec使用&进行{{1}}进程的便宜且简单的路由,从而使其背景化。但是,这给你很少的控制/状态。

正确的方法IMO是将这些长时间运行的任务排队到数据库中,并将一些状态信息与它们相关联。然后有一个专门的进程,它与你的web服务器分开运行,检查数据库中的任务,然后执行它们,用成功/失败状态更新数据库。

答案 2 :(得分:0)

调查使用Mseven的队列插件等队列:

Msevens Queue Plugin

或者,如果您想要更多基于守护程序的工作,请查看Beanstalkd。 mseven的队列插件非常自我解释。使用&amp ;,远离分叉过程,它可能失去控制。