proc_open()运行一个进程,让PHP等待它完成?

proc_open()运行一个进程,让PHP等待它完成?,php,process,Php,Process,我在windows7上使用XAMPP1.7.7(PHP版本5.3.8) 我使用proc_open()运行一个进程并希望重定向到另一个网页, 但是PHP将等待该过程完成。 我不希望运行的进程让我的web等待它。 我该怎么办 我需要管道和返回值 我需要的是: 用户在A页提交一些内容,然后web将重定向到B页(用户可以离开B页)。 同时,将调用一些进程,生成一些结果并更新 数据库,因此当用户刷新页面B时,将显示正确的结果。 此外,用户可以随时查看页面B。 我注意到chris的评论,他的方法可以运行一个

我在windows7上使用XAMPP1.7.7(PHP版本5.3.8) 我使用proc_open()运行一个进程并希望重定向到另一个网页, 但是PHP将等待该过程完成。 我不希望运行的进程让我的web等待它。 我该怎么办

我需要管道和返回值

我需要的是: 用户在A页提交一些内容,然后web将重定向到B页(用户可以离开B页)。 同时,将调用一些进程,生成一些结果并更新 数据库,因此当用户刷新页面B时,将显示正确的结果。 此外,用户可以随时查看页面B。 我注意到chris的评论,他的方法可以运行一个 独立于PHP。但我不知道如何在隐藏进程或获取上使用管道 返回值


我不知道AJAX,我认为Gearman可能会工作,但它可能有点复杂。

PHP设计为单线程。当HTTP请求完成时,无法让php进程继续运行

话虽如此,您可以利用AJAX做您想做的事情。不要有一个HTTP请求,而是同时触发两个请求。其中一个将包含长流程(以及
set\u time\u limit(0)


有很多不同的方法可以做到这一点。我通常做的是:当我收到初始请求时,我会立即响应一个HTML页面,该页面包含对第二个php文件的自动AJAX调用,该文件包含长流程。因此,每个人都很高兴:用户看到即时响应,而漫长的过程可能需要时间,因为没有人在等待。

这应该使用类似的作业队列来完成,这样您就可以让一个工作线程保持运行,然后稍后从重定向到的页面查询它的状态


要在Windows上安装Gearman,请参阅前面的问题和答案:

尝试看看您的问题是否得到了回答:

我通过启动一个新的PHP来实现我的请求,从而解决了这个问题。

谢谢。但我现在不知道。对不起,这对我不起作用。因为我运行windows操作系统,需要管道将数据传输到进程的STDIN并获取其STDOUT、STDERR和返回值。此链接不再可用。