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

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

CakePHP est un framework MVC open source. Cela facilite grandement le développement, le déploiement et la maintenance des applications. CakePHP dispose d'un certain nombre de bibliothèques pour réduire la surcharge des tâches les plus courantes.

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et
