Apache启动过程(研究PHP_MINIT_FUNCTION的调用)
2008-07-24 14:36
801 查看
· 作者:laruence(http://www.laruence.com/)
· 本文地址: http://www.laruence.com/2008/07/24/206.html
· 转载请注明出处
信件内容
HI all:
上次我做的讲座中,讲到,PHP模块的MINIT_FUNCTION在多进程的环境下,会被调用多次,也就是,每个apache的自进程都会去调用一次。
今天早上的时候,学鹏经过实际验证发现事实不是这样。
于是经过反复验证 ,终于得出如下结论:
当Apache启动的时候,主进程会首先把所有模块load进来,然后又卸载掉
他们,这是第一遍,目的是为了检查配置文件。如果一切正常,Apache就会重新
load一便所有的模块,然后才fork子进程,这样,PHP模块就会只被初始化一次,
然后在fork的时候复制给子进程。
当apache关闭的时候 ,每个自进程都会去调用一次模块的关闭函数。
也就是说, PHP模块的初始化函数只会被调用一次,而关闭函数会被调用多次。
猜想是因为apache1.5x以后,做了优化,造成现在的这种机制,apache1.3应
该还是和我当时讲的一样。
最后,非常感谢学鹏的实际验证,没有实际验证,这个问题就不会被发现。
真正要了解一个东西,不应该只是听听就算,应该去动手验证一下,再次对学
鹏师兄表示,赞!
--
惠新宸 xinchen.hui | Engineer | +86 659-86111 |
Y! China
· 本文地址: http://www.laruence.com/2008/07/24/206.html
· 转载请注明出处
信件内容
HI all:
上次我做的讲座中,讲到,PHP模块的MINIT_FUNCTION在多进程的环境下,会被调用多次,也就是,每个apache的自进程都会去调用一次。
今天早上的时候,学鹏经过实际验证发现事实不是这样。
于是经过反复验证 ,终于得出如下结论:
当Apache启动的时候,主进程会首先把所有模块load进来,然后又卸载掉
他们,这是第一遍,目的是为了检查配置文件。如果一切正常,Apache就会重新
load一便所有的模块,然后才fork子进程,这样,PHP模块就会只被初始化一次,
然后在fork的时候复制给子进程。
当apache关闭的时候 ,每个自进程都会去调用一次模块的关闭函数。
也就是说, PHP模块的初始化函数只会被调用一次,而关闭函数会被调用多次。
猜想是因为apache1.5x以后,做了优化,造成现在的这种机制,apache1.3应
该还是和我当时讲的一样。
最后,非常感谢学鹏的实际验证,没有实际验证,这个问题就不会被发现。
真正要了解一个东西,不应该只是听听就算,应该去动手验证一下,再次对学
鹏师兄表示,赞!
--
惠新宸 xinchen.hui | Engineer | +86 659-86111 |
Y! China
相关文章推荐
- Apache启动过程(PHP_MINIT_FUNCTION的调用)
- Apache启动过程(PHP_MINIT_FUNCTION的调用)
- 获取PHP里function调用过程
- PHPExcel导入导出 若在thinkPHP3.2中使用(无论实例还是静态调用(如new classname或classname::function)都必须加反斜杠,因3.2就命名空间,如/classname
- php7+apache2.4 (Windows7下),成功启动。
- php调用MySQL存储过程方法集合
- php 调用sqlsrv 读取记录+返回参数 调用存储过程
- 简单的PHP调用MYSQL存储过程的类
- 用PHP调用数据库的存贮过程!
- PHP实现异步调用方法研究
- 用PHP调用数据库的存贮过程
- 现象:APACHE调用PHP执行慢4到5秒
- PHP实现异步调用方法研究
- CentOS7 安装配置过程 (Apache + SQL+ PHP + SSH + Opensips+Openfire)
- Ubuntu下Nginx做前端调用Apache做PHP动态请求处理
- 在XAMPP v3.2.1中,启动apache时,弹出“directive 'register_globals' is no longer availble in PHP”警告。
- MySQL 存储过程带in和out参数以及PHP,PB如何调用的小例子
- 对调用了TypeMock.net的代码进行调试遇到的怪问题--在vs.net中启动resharper自带的unit test的过程和方式是什么样的?
- PHP5下SOAP调用实现过程
- 启动 apache2.4 出现 invalid command order 问题 【由于 PHP 访问权限 403 问题引起】