现在的位置: 首页 -> PHP学习 -> 用C语言开发php7扩展demo

用C语言开发php7扩展demo

2020-05-13 22:11 评论数 0 ⁄ 被浏览 934 views+

环境:linux(centos)+php7.1.7


一:前期准备


1、下载php源码包

下载地址:https://www.php.net/releases/

下载到/root/websoft/php-7.1.7.tar.gz


2、解压

tar -zxvf php-7.1.7.tar.gz


3、进入到ext目录

cd php-7.1.7/ext


二:扩展开发


1、生成扩展骨架

./ext_skel --extname=resoncounter


image.png


2、进入新生成的扩展目录,如下文件:

image.png 


3、配置config.m4

去掉“dnl PHP_ARG_WITH(resoncounter, for resoncounter support,”和“dnl [  --with-resoncounter  Include resoncounter support])”前面的注释(dnl是注释的意思),去掉后的效果如下图:

image.png


4、编写扩展

vim resoncounter.c

PHP_FUNCTION(smart_counter)
{
    long arg_add1 = 0;
    long arg_add2 = 0;
    long sum = 0;
    size_t arg_len;
 
    if (zend_parse_parameters(ZEND_NUM_ARGS(), "ll", &arg_add1, &arg_add2, &arg_len) == FAILURE) {
        return;
    }
 
    sum = arg_add1 + arg_add2;
 
    RETURN_LONG(sum);
}


image.png 


在zend_function_entry中加入:PHP_FE(smart_counter, NULL)


image.png 


5、生成扩展

①在当前目录下执行“/usr/local/php5.3.3/bin/phpize”(也可以用php7)


image.png 


②执行“./configure --prefix=/usr/local/php5.3.3”

③执行“make && make install”

出现如下提示说明编译成功:

Build complete.

Don't forget to run 'make test'.

Installing shared extensions:     /usr/local/php7.1.7/lib/php/extensions/no-debug-non-zts-20160303/


image.png 


三:安装并测试


1、修改php.ini

vim /usr/local/php7.1.7/etc/php.ini

在该文件中添加:

extension=/usr/local/php7.1.7/lib/php/extensions/no-debug-non-zts-20160303/resoncounter.so


2、重启php

①找到php进程

image.png 

②kill -USR2 进程号


3、测试扩展

image.png 

结果如下:

image.png 


 

文章出自:https://www.daixiaorui.com/read/289.html 本站所有文章,除注明出处外皆为原创,转载请注明本文地址,版权所有。

目前有 0 条评论  @我要评论

您的每一个评论都是对我的一份支持

 博客二维码

昵称 *

邮箱 *