编写一个简单的php C扩展

博客介绍了编写Linux版PHP扩展,生成的扩展文件结尾为.so。同时给出了编写扩展的环境,包括nginx 1.15.10、mysql 5.6.44、php 7.0,整体环境为LNMP,并表示后续会开始具体代码编写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中有时为了提高性能可能需要把一些商业逻辑编写成扩展来提高性能

下面我们来编写一个简单的扩展吧

注意此处生成的扩展是linux版的php扩展 故生成的扩展结尾是.so的文件

环境 :

  1. nginx:1.15.10
  2. mysql:5.6.44
  3. php:7.0
  4. 环境是LNMP

下面开始具体的代码


 1. 找到php的安装目录下的ext文件夹(且存在ext_skel文件)
 2. ./ext_skel --extname=test_add
 3. 其中test_add为创建的扩展名称(此处根据个人情况自定义)
 4. 运行2的命令会生成test_add文件夹
 5. cd test_add
 6. 核心文件:config.m4 , php_test_add.h , test_add.c
 
 
 7. 修改config.m4
 8. 删除如下 dnl
 9.
  > dnl PHP_ARG_WITH(test_add, for test_add support
 > dnl Make sure that the comment is aligned
 > dnl [  --with-test_add             Include test_add support])
10.修改为如下代码
> PHP_ARG_WITH(test_add, for test_add support,
> [ --with-test_add Include test_add support])


11.修改php_test_add.h

> 在最下面添加如下代码:
> PHP_FUNCTION(test_add);


12.修改test_add.c

> 在 PHP_FE 和 PHP_FE_END 添加如下代码:
> PHP_FE(test_add,  NULL)
> 在末尾加上这个方法的执行逻辑(此处进测试所以写的简单),

PHP_FUNCTION(test_add) {

    php_printf("Hello World!\n");

    RETURN_TRUE;

}


13.接下来执行编译即可,命令如下

> phpize
> ./configure 
> 若出现报错(configure: error: Cannot find php-config. Please use --with-php-config=PATH),则改为如下命令
> ./configure --with-php-config=/www/server/php/70/bin/php-config
> 其中www/server/php/70 是php的安装目录 具体到php-config的目录
> make && make install
> 接下来进入php.ini文件,添加如下代码
> extension=test_add.so
> 保存并重启php-fpm即可
> php -m

好了至此,已经完成了整个流程,如有疑问,下方评论

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值