2012-04-02 29 views
0

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

回答

2

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

+0

感谢您的回复,您可以给我一些教程或示例如何使用此消息队列? – user1290932 2012-04-02 07:52:14

0

您可以在命令行中使用进程的廉价且简单的路径exec,导致它后台运行。但是,这给你很少的控制/状态。

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

0

考虑使用一个队列,如Mseven的队列插件:

Msevens Queue Plugin

或者,如果你想要一个更基于守护工作,看看Beanstalkd。尽管如此,mseven的队列插件是非常自我解释的。远离使用&分叉进程,它可能会失去控制。