zoukankan      html  css  js  c++  java
  • [php-src]一个Php扩展的结构

    内容均以php5.6.14为例.

    要拥有一个PHP扩展的架子,使用源码中准备好的 /ext/ext_skel 工具,可以生成一个可运行的扩展骨架。

    不加选项运行 ./ext_skel,可查看所有可用选项的帮助文字。

     1)  ./ext_skel --extname=myext(扩展名),自动生成扩展目录 myext,并出现一段步骤提示:

      

      意思是使用自己的扩展要经过这8步,但 buildconf 是在 php-src 内执行生成 configure 文件

      make 也相当于编译整个php,我们实际上可以直接在扩展内进行安装操作,和其它扩展一样

      扩展目录内真正有用的文件就三个 config.m4 , php_myext.h , myext.c .

      --no-help 选项很有用,加上后不再出现上面一长段文字和骨架代码中显而易见的注释,对于已有开发经验的人来说比较整洁一点.

     2) vi config.m4 主要是打开下面两个选项,去掉前面的dnl,让扩展支持 --with-myext, --enable-myext 选项,一个用来引入扩展,一个用来开启扩展:

    其余的m4语法,等有功夫再回过头去看,目前仅需两项。

      

     3) 编译安装扩展

    cd myext
    phpize  (即 /usr/local/php/bin/phpize)
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make
    make test (可忽略) make install

      

     4) 使用

    安装完生成的 myext.so 扩展文件在这个目录,/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226

    最后,把 myext.so 加入到 php.ini 中,extension = myext.so

    使用 php -m 可以查看是否安装成功,浏览器中则用phpinfo查看。

      5) 开发

    扩展模块编译进php后,后面修改了扩展源文件后,只需要重新 make && sudo make install .

    Q&A

    本地安装多个版本PHP时,通过在 ~/.bash_profile 中加入php命令行别名,如:

    `alias php5.6.14=/usr/local/php5.6.14/bin/php`

    source ~/.bash_profile 使立即生效,即可在CLI下使用 php5.6.14 -f 1.php 查看运行结果。

    PHP的生命周期:

     (命令执行) 扩展模块初始化 -> (请求脚本) 扩展请求初始化 -> (执行脚本) 扩展请求关闭 -> (完成请求) 扩展模块关闭

     这些都在你的扩展主文件 myext.c 中。

    PHP_MINIT_FUNCTION(myext)
    {
      # 注册常量或类等初始化操作
    return SUCCESS; } PHP_RINIT_FUNCTION(myext) {
      # 例如记录请求开始时间
    return SUCCESS; } PHP_RSHUTDOWN_FUNCTION(myext) {
      # 例如记录请求结束时间,记录日志 return SUCCESS; } PHP_MSHUTDOWN_FUNCTION(myext) {
      # 注销一些持久化资源   return SUCCESS; }

    开发文档:https://github.com/farwish/php-core-hack

    Link: http://www.cnblogs.com/farwish/p/5208653.html

  • 相关阅读:
    kitkat-s5p4418drone 记录
    Android USER 版本与ENG 版本的差异
    Android中的Apk的加固(加壳)原理解析和实现(转)
    Android悬浮窗实现 使用WindowManager
    Android系统的开机画面显示过程分析
    【PMP】变更流程图与说明
    【PMP】十五至尊图
    【Excle】一个比VLOOKUP牛的函数LOOKUP
    【DB2】慎用nickname,可能会引起效率较低
    【读书】人生向前-读书笔记
  • 原文地址:https://www.cnblogs.com/farwish/p/5208653.html
Copyright © 2011-2022 走看看