加入收藏 | 设为首页 | 会员中心 | 我要投稿 成都站长网 (https://www.028zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php扩展开发初探

发布时间:2022-12-15 14:07:02 所属栏目:PHP教程 来源:转载
导读: 2015年2月26日 15:44:41
原因: 想用PHP实现一个布隆过滤器算法, 其中要用到位运算, 但是PHP的内置的int类型不给力, 不能支持大整数的位运算
数据一旦太大, 就会变为浮点数表示, 浮点数无法

2015年2月26日 15:44:41

原因: 想用PHP实现一个布隆过滤器算法, 其中要用到位运算, 但是PHP的内置的int类型不给力, 不能支持大整数的位运算

数据一旦太大, 就会变为浮点数表示, 浮点数无法参与位运算... 也试过nodejs, redis 都不行. 用java吧, 还得搭环境

就想用PHP扩展的方式,用c去实现

第一步: 用PHP命令去自动生成扩展框架

进入到PHP的源代码目录->进入ext目录下

./ext_skel --extname=zzbbloom

第二步: 修改框架, 添加自己的函数代码

上一步生成的框架实际上是一个名字为zzbbloom的文件夹, 在/path/to/php/src/ext/zzbbloom/, 进入该文件夹

1) 编辑config.m4文件(文件每一行开始的'dnl' 是注释符), 找到PHP_ARG_ENABLE(zzbbloom, ..... 这几行, 去掉前边的dnl字符串:

1 PHP_ARG_ENABLE(zzbbloom, whether to enable zzbbloom support,
2     [  --enable-zzbbloom           Enable zzbbloom support])

设置编译PHP时, 是用 --with-xxxx 参数编译进PHP扩展, 还是用 --enable-xxxx

2) 编辑zzbbloom.h zzbbloom.c 文件添加自己的函数(也可以用框架自动生成的函数, confirm_zzbbloom_compiled())

参考:

第三步: 编译

先进入到生成的框架目录里边,然后执行phpize命令php扩展, 然后执行 ./configure命令, 最后 make, make install

1 cd path/to/php/srccode/ext/zzbbloom/
2 /usr/local/php/bin/phpize //这个命令会生成 configure makefile等文件
3 ./configure --with-php-config=/usr/local/php/bin/php-config

php扩展_php 安装curl扩展_ubuntu php curl扩展

4 make 5 make install

第四步: 重启php-fpm(不用重启nginx)

参考:

第五步: 测试

1 var_dump(get_loaded_extensions());
2 var_dump(get_extension_funcs('zzbbloom'));
3 echo confirm_zzbbloom_compiled('我的第一个PHP扩展,哈哈哈哈');

其它参考:

PHP扩展开发与内核应用

另: pecl里已经有人实现了布隆过滤器

(编辑:成都站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!