代潇瑞博客

用C语言开发php7扩展demo

| 点击次数:322

环境: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 


【相关推荐】

触屏版 | 电脑版

Copyright © 2013 代潇瑞博客手机版

QQ: 446673330

粤ICP备13071969号-1