首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过apache执行pcntl函数

如何通过apache执行pcntl函数
EN

Stack Overflow用户
提问于 2013-10-16 09:55:21
回答 1查看 1.6K关注 0票数 1

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

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

我的问题:

是否有任何工作可以让我通过apache执行具有pcntl_fork()实现的php脚本? 为什么首先通过apache执行分叉并不安全,但是在CLI中足够安全呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-16 10:18:39

例如,如果您希望脚本在用户取消页面请求(在浏览器上按“停止”或“后退”或“刷新”等)之后继续运行,那么您可能需要考虑ignore_user_abort http://www.php.net/manual/en/function.ignore-user-abort.php

至于为什么不允许它从apache中分叉,这是因为PHP与Apache的接口方式。我在这方面没有很深的知识可以详细解释,但可能是这样的:

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19400299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档