PHP扩充模块解包(由term_to_binary生成的)Erlang ext term格式的二进制数据
PHP扩展模块解包(由term_to_binary生成的)Erlang ext term格式的二进制数据
1、引言
《初探Erlang的term_to_binary数据封包机制》一文中已经介绍了Erlang扩展term格式(Erlang external term format)binary的作用,有些同学想把Erlang数据通过term_to_binary函数封包后以二制进形式存入数据库,然后用PHP读取并解包成PHP数组。
为了解决上面的这种应用场合中遇到的问题,
参考peb(Php-Erlang Bridge)扩展写了这个类似erlang:binary_to_term/1函数功能的binary扩展,
可以理解为是PHP版的binary_to_term。
2、binary扩展简介
2.1、这个binary扩展导出了以下三个函数:
- array binary_to_term(string $binary) 返回解包后的数组。
- int binary_errno () 返回上次调用binary_to_term产生的错误代号。0为无错语,1为二进制内容中出现在不支持的数据类型。
- string binary_error () 返回上次调用binary_to_term产生的错误信息,如果没有出错则为空。
2.2、binary扩展模块下载地址:
http://download.csdn.net/download/u011471961/6447631
3、binary扩展的安装
Install On *nux:
Step 1:
---------
unzip binary.zip
cd ./binary
phpize或phpize5
Step 2:
---------
执行configure前先确认Erlang安装目录和php-config路径,下面的configure只是示例,可根据实际路径修改。
在linux下安装:
./configure CC="gcc -L/usr/local/lib/erlang/lib/erl_interface-3.7.11/lib -I/usr/local/lib/erlang/lib/erl_interface-3.7.11/include" --enable-binary --with-php-config=/usr/local/php/bin/php-config
OR:
./configure CC="gcc -L/usr/local/lib/erlang/lib/erl_interface-3.7.11/lib -I/usr/local/lib/erlang/lib/erl_interface-3.7.11/include" --enable-binary --with-php-config=/usr/bin/php-config5
在苹果电脑上安装:
sudo MACOSX_DEPLOYMENT_TARGET=10.7 CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch i386 -arch x86_64 -bind_at_load" ./configure CC="gcc -m32 -L/usr/local/lib/erlang/lib/erl_interface-3.7.6/lib -I/usr/local/lib/erlang/lib/erl_interface-3.7.6/include" --enable-binary
Step 3:
---------
make
Step 4:
---------
make test
Step 5:
---------
make install
Step 6:
---------
修改php.ini文件:
extension=binary.so
OR:
extension=/path/to/binary.so
Step 7:
---------
重启php-cgi或apache
Step 8:
---------
通过phpinfo()函数或命令(php -m)查看是否加载了binary模块。
4、binary扩展应用示例
4.1、创建mysql数据表
CREATE TABLE IF NOT EXISTS `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `bin` varbinary(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
4.2、在Erlang端写入数据
test() -> Data = [{name, rolong},{phone, 888888}], Bin = term_to_binary(Data), %% 写入数据库的接口依自己情况而定 db:execute(>, [Bin]).
4.3、在PHP中读取并解包成PHP数组
<?php $sql = "select `bin` from test order by id desc limit 1"; %% 读取数据库的接口依自己情况而定 $bin = Db::getInstance()->getOne($sql); $data = binary_to_term($bin); echo '<pre class="brush:php;toolbar:false">'; var_dump($data); echo '
输出
array(1) { [0]=> array(2) { [0]=> array(2) { [0]=> string(4) "name" [1]=> string(6) "rolong" } [1]=> array(2) { [0]=> string(5) "phone" [1]=> int(888888) } } }
4、小结
在binary扩展模块中,部分较少用的数据类型暂末支持,有特殊需要的同学可以在源码中自行修改实现。Erlang提供了数据封包、解包的C接口,可参考 http://www.erlang.org/doc/apps/erl_interface/index.html

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。
