• 在Linux下编写php扩展


    以下内容是本人学习过程中的笔记或者心得,如果有什么建议或者意见请在评论中提醒我,谢谢,这篇文章我会定期更新,由浅到深的分享我学PHP扩展历程

    或者在学习中有什么问题欢迎交流

    1.去PHP官网下载一个源码包,然后解压到某个目录

    2.进入源码目录中的ext目录中

    3.执行./ext_skel --extname=myext(这是扩展的名字) 生成扩展框架 [ps:如果ext_skel无法执行,请查看ext_skel文件是否有可执行权限]

    4.编写扩展函数

      a).我们打开myext.c文件,里面有一些函数,包括

        PHP_FUNCTION(),这是编写扩展中函数逻辑的注册函数,每一个扩展函数对应一个PHP_FUNCTION(扩展函数名){}

        下面四个函数是扩展的c文件中基本都有的,这些在PHP的整个生命周期中需要调用的,具体的请看:

        PHP_MINIT_FUNCTION(),这个函数在该扩展被载入时调用

        PHP_RINIT_FUNCTION(),PHP初始化执行脚本的基本环境,在文件请求到达后,文件编译前执行该函数,例如记录请求开始时间,结合请求结束时间,可以记录下处理请求所花费的时间

        PHP_RSHUTDOWN_FUNCTION(),一般脚本执行结束(执行到末尾或者exit,die退出后)后调用该函数

        PHP_MSHUTDOWN_FUNCTION(),SAPI生命周期结束后,一般注销一些持久化的资源

      b).我们来编写一个自己的函数

        在myext.c文件中添加

    PHP_FUNCTION(myfunction){
        long x,y,z;
        int argc =ZEND_NUM_ARGS();
    
        if(zend_parse_parameters(argc TSRMLS_CC,"ll",&x,&y)==FAILURE)
            return;
        z = x * y;
        RETURN_LONG(z);
    }

        然后在myext.c文件中的zend_function_entry myext_functions里面添加PHP_FE(myfunction,NULL) 注意后面不带逗号或者分号,需要换行

        将config.m4中下面代码前的dnl去掉

          dnl PHP_ARG_WITH(myext, for myext support,
          dnl [ --with-myext Include myext support])

        在扩展目录下执行phpize命令生成扩展的配置工具

        然后执行./configure -with-php-config=/usr/bin/php-config && make && make install 编译和安装,成功后在PHP扩展目录中可以看到编译好的myext.so文件

        然后在php.ini文件中添加extension=myext.so

        重启一下服务,测试myfunction(4,5)的结果是否输出20

      

  • 相关阅读:
    Python制作天气查询软件【python实战必学】
    Python妹子图爬虫实战项目【新手必学】
    Python超级无敌技巧分享
    PlaySound使用进阶
    【】2019
    【】风之忧伤
    delete[]和delete
    《windows程序设计 第五版》实例
    playsound函数用法
    【Python入门自学笔记专辑】——Python跳转语句和循环使用范围
  • 原文地址:https://www.cnblogs.com/xiaozong/p/4976812.html
Copyright © 2020-2023  润新知