PHP自定义扩展之生命周期的示例分析(php,编程语言)

时间:2024-05-03 03:01:32 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    PHP%E8%87%AA%E5%AE%9A%E4%B9%89%E6%89%A9%E5%B1%95%E4%B9%8B%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E7%9A%84%E7%A4%BA%E4%BE%8B%E5%88%86%E6%9E%90

php_request_startup

这个阶段和php_module_startup差不多,都是初始化工作,比php_module_startup简单很多,可以自己看下,重点来看下执行阶段

php_execute_script

用gdb看看调用栈,gdb ./php

php_execute_script打断点,执行,在看下调用栈,

在调用栈可以清楚看到执行流程,现在到/cli/php_cli.c文件看看做了哪些事情,

初始化变量,解析命令到/main/main.c文件看看真正的执行阶段

加载要执行的php文件,通过zend_compile_file进行词法分析 语法分析,生成AST,编译成op_array,也就是指令集,
我们看下指令集,

然后放到zend虚拟机上执行zend_execute(op_array, retval);这这里可以看到真正执行的是这个zend_execute_ex(execute_data);,它是一个函数指针,我们可以更换它,知道这个,那么我们在写扩展时可以重新写个zend_execute_ex函数替换php默认的,我们自己的就可以做很多事情,像拦截php函数,做性能监控。

请求关闭阶段php_request_shutdown,模块关闭阶段php_module_shutdown这两个阶段主要是做变量销毁,现在我们知道了一个自定义扩展在生命周期里的怎么执行的。

本文:PHP自定义扩展之生命周期的示例分析的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:asp.net如何使用ajaxFileUpload插件上传文件下一篇:

9 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18