在项目中有时为了提高性能可能需要把一些商业逻辑编写成扩展来提高性能
下面我们来编写一个简单的扩展吧
注意此处生成的扩展是linux版的php扩展 故生成的扩展结尾是.so的文件
环境 :
- nginx:1.15.10
- mysql:5.6.44
- php:7.0
- 环境是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
好了至此,已经完成了整个流程,如有疑问,下方评论