2012-02-11 63 views
1

我使用windows7的XAMPP 1.7.7(PHP 5.3.8版本) 我使用proc_open()运行一个进程,并希望重定向到另一个网页, 但PHP会等到过程结束。 我不想让运行过程让我的网站等待它。 我该怎么办?proc_open()运行一个进程让PHP等待它完成?

我需要管道和返回值。

我需要的是: 用户在页面A中提交一些内容后,网页将重定向到页面B(用户可以离开页面B)。 同时会调用一些进程,产生一些结果并更新 数据库,所以当用户刷新页面B时,会显示正确的结果。更重要的是,用户可以随时查看页面B. 我注意到,克里斯对PHP Manual评论,他的方法可以运行一个过程,是独立的PHP.But 我不知道如何使用管道就躲过程中或得到 返回值。

而且我对AJAX不知道,我觉得可能的Gearman工作,但它也许有点复杂。

回答

0

PHP是单线程的设计。当HTTP请求完成时,没有办法让PHP进程继续运行。

说了这么多,你可以利用AJAX做你想做什么。而不是有一个HTTP请求,同时触发两个请求。其中一个将包含漫长的过程(以及set_time_limit(0))。

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

+0

Thanks.But我现在不知道。 – power 2012-02-11 14:11:17