php擴充套件開發初探
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())
參考: http://www.jb51.net/article/16791.htm http://www.open-open.com/lib/view/open1340585955030.html
第三步: 編譯
先進入到生成的框架目錄裡邊, 然後執行phpize命令, 然後執行 ./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 4 make 5 make install
第四步: 重啟php-fpm(不用重啟nginx)
參考: http://www.cnblogs.com/iLoveMyD/p/4301429.html
第五步: 測試
1 var_dump(get_loaded_extensions()); 2 var_dump(get_extension_funcs(`zzbbloom`)); 3 echo confirm_zzbbloom_compiled(`我的第一個PHP擴充套件,哈哈哈哈`);
其它參考:
http://www.walu.cc/phpbook/5.1.md PHP擴充套件開發與核心應用
另: pecl裡已經有人實現了布隆過濾器
http://www.pecl.php.net/packages.php?catpid=27&catname=Structures
相關文章
- Chrome 擴充套件程開發初探Chrome套件
- 開發php擴充套件PHP套件
- PHP擴充套件開發就是一個自己的PHP擴充套件PHP套件
- Go開發PHP擴充套件GoPHP套件
- php開啟curl擴充套件PHP套件
- PHP擴充套件開發教程2 – 編寫第一個擴充套件 hello worldPHP套件
- JMeter 擴充套件開發:擴充套件 TCP 取樣器JMeter套件TCP
- 新增php擴充套件PHP套件
- php ubuntu 擴充套件PHPUbuntu套件
- 用 PHP-CPP 開發 PHP 擴充套件:raylib-phpcppPHP套件
- 白話 PHP7 擴充套件開發:建立物件PHP套件物件
- Chrome瀏覽器擴充套件開發系列之十九:擴充套件開發示例Chrome瀏覽器套件
- chrome擴充套件程式開發Chrome套件
- LLM 擴充套件開發工具套件
- PHP 擴充套件安裝PHP套件
- PHP7擴充套件PHP套件
- 如何基於 PHP-X 快速開發一個 PHP 擴充套件PHP套件
- PHP原始碼系列之擴充套件的原理與開發PHP原始碼套件
- php7安裝redis擴充套件和memcache擴充套件PHPRedis套件
- lnmp 環境開啟 fileinfo php 擴充套件LNMPPHP套件
- 如何開啟寶塔皮膚php擴充套件PHP套件
- 如何開發Chrome擴充套件程式Chrome套件
- C++ 開發 PHP 7 擴充套件之原生常量定義C++PHP套件
- PHP 底層核心原始碼與擴充套件開發資料PHP原始碼套件
- PHP核心介紹及擴充套件開發指南—類和物件PHP套件物件
- PHP安裝redis擴充套件PHPRedis套件
- php amqp擴充套件安裝PHPMQ套件
- (MAC) PHP擴充套件安裝MacPHP套件
- php mysql擴充套件安裝PHPMySql套件
- php7windowsredis擴充套件PHPWindowsRedis套件
- PHP 擴充套件 Mongo 與 MongoDBPHP套件MongoDB
- PHP 擴充套件 Mysql 與 MysqliPHP套件MySql
- php 安裝yar擴充套件PHP套件
- php安裝openssl 擴充套件PHP套件
- php gmp擴充套件安裝PHP套件
- PHP opcache擴充套件安裝PHPopcache套件
- PHP安裝fastDFS擴充套件PHPAST套件
- 使用 Rust 建立 PHP 擴充套件RustPHP套件