Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何通过apache执行pcntl函数_Php_Apache_Pcntl - Fatal编程技术网

Php 如何通过apache执行pcntl函数

Php 如何通过apache执行pcntl函数,php,apache,pcntl,Php,Apache,Pcntl,我正在使用php的pcntl_fork(),我注意到从CLI执行时得到了正确的结果,但当我从apache执行时,它给了我一个异常“未定义函数pcntl_fork()” 是的,我读到通过apache执行是不够安全的 我的问题是: 有没有什么方法可以让我通过apache执行具有pcntl_fork()实现的php脚本 首先,为什么通过apache执行forking并不安全,但从CLI执行forking却足够安全 如果你希望脚本在用户取消页面请求(在浏览器上按下“停止”或“返回”或“刷新”等)之后继续

我正在使用php的pcntl_fork(),我注意到从CLI执行时得到了正确的结果,但当我从apache执行时,它给了我一个异常“未定义函数pcntl_fork()”

是的,我读到通过apache执行是不够安全的

我的问题是:

有没有什么方法可以让我通过apache执行具有pcntl_fork()实现的php脚本

首先,为什么通过apache执行forking并不安全,但从CLI执行forking却足够安全


如果你希望脚本在用户取消页面请求(在浏览器上按下“停止”或“返回”或“刷新”等)之后继续运行,那么你可能要考虑<代码> IGORIGIOUSERYABORT

至于为什么不允许从apache派生,这是因为PHP与apache的接口方式。我在这方面没有深入的知识来详细解释,但可能是这样的:

如果您使用mod_php,Apache会为每个请求生成一个新的php进程。这意味着apache需要跟踪每个进程,并在请求结束后终止该进程

然而,对于mod_fcgi和其他(我认为)程序,一个PHP进程会产生多个请求,这意味着该进程将继续运行并接受新的请求。然而,为了控制内存泄漏,这些子PHP进程会定期被终止

现在,如果您试图在这些PHP进程子进程中生成一个新进程,坦白说,我不知道会发生什么。生成的进程很可能不会被杀死并继续占用资源