PHP / Apache中的进程分叉是一个好主意吗?

我正在用PHP编写一个简单的应用程序,它需要偶尔执行一组相当密集的MySQL更新。 我不特别希望这会导致用户延迟,所以我想知道使用pcntl_fork()。

我不确定它是如何工作的:父进程完成后,子进程是否继续运行? 父进程是否会结束,并且在子进程完成之前用户的页面加载完全?

换句话说,这是一种安全的方式,让PHP脚本(在Apache下运行)在不延迟用户的情况下做一些耗时的更新,或者我应该让用户忍受一些延迟?


父进程将结束,用户的页面将全部加载,子进程将继续,并且使用不会反馈子进程是否成功完成。


有人可能会详细地告诉你,当你在apache下调用时,会发生什么情况,但根据你正在使用的apache和php的版本和组合,你可能会得到并非总是真的答案。 你应该使用ajax并有两个请求。 回应一次,在页面上显示你在做什么,然后用ajax调用轮询第二次请求状态以及你实际工作的地方。


如果PHP在Apache下运行,因为mod_php模块分支根本不起作用,您将得到一个警告,说明函数* pcntl_fork()*是未定义的。 在这种情况下,一个好的解决方案是使用exec()来使用命令行来运行单独的php作业。

链接地址: http://www.djcxy.com/p/42145.html

上一篇: Is process forking in PHP / Apache a good idea?

下一篇: Forking Subversion Project