Cet article expliquera les problèmes liés au traitement des données des tampons de protocole en PHP.
Protocol Buffers est un format de stockage de données structurées léger et efficace qui peut être utilisé pour la sérialisation de données structurées et est très approprié pour le stockage de données ou le format d'échange de données RPC. Il peut être utilisé comme format de données structurées sérialisées extensible, indépendant du langage, de la plate-forme et dans les protocoles de communication, le stockage de données et d'autres domaines. Actuellement, des API en trois langages : C++, Java et Python sont fournies.
Installer le compilateur de protocole
Télécharger et installer
$ wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz $ tar zxvf protobuf-2.5.0.tar.gz $ cd protobuf-2.5.0 $ ./configure --prefix=/usr/local/protobuf $ sudo make $ sudo make install
Vérification de l'installation :
$ /usr/local/protobuf/bin/protoc --version libprotoc 2.5.0
extension php
Installer l'extension php
$ wget https://pecl.php.net/get/protocolbuffers-0.2.6.tgz $ tar zxvf protocolbuffers-0.2.6.tgz $ cd protocolbuffers-0.2.6 $ phpize $ ./configure $ sudo make $ sudo make install
Ajouter le fichier de configuration php.ini : extension = "protocolbuffers.so"
$ php -m | > plug-in de protocole
$ mkdir ~/code/app$ cd ~/code/app$ composer require protocolbuffers/protoc-gen-php
$ vim demo.proto syntax = "proto2"; package Proto.Demo; message OrderInfo { required string name = 1 ; required int32 age = 2; required string amount = 3; } message UserInfo { required int32 uid = 1; required string address = 2; }
<. 🎜>Test
$ vim demo.proto.php<?phpspl_autoload_register(function($name){ static $classmap; if (!$classmap) { $classmap = array( 'Proto\Demo\OrderInfo' => '/Proto/Demo/OrderInfo.php', 'Proto\Demo\UserInfo' => '/Proto/Demo/UserInfo.php', // @@protoc_insertion_point(autoloader_scope:classmap) ); } if (isset($classmap[$name])) { require __DIR__ . DIRECTORY_SEPARATOR . $classmap[$name]; } }); call_user_func(function(){ $registry = \ProtocolBuffers\ExtensionRegistry::getInstance(); // @@protoc_insertion_point(extension_scope:registry)}); $oi = new Proto\Demo\OrderInfo(); $oi->setName('Jack'); $oi->setAge(28); $oi->setAmount('500');//压缩数据$protoData = $oi->serializeToString(); var_dump("压缩数据:"); var_dump($protoData);//获取到$age的值$obj = Proto\Demo\OrderInfo::parseFromString($protoData); var_dump("获取数据:"); var_dump($obj->getName()); var_dump($obj->getAge()); var_dump($obj->getAmount());
Recommandations associées :
$ php demo.proto.php string(15) "压缩数据:"string(13) " Jack500"string(15) "获取数据:"string(4) "Jack"string(2) "28"string(3) "500"
À propos de la classe de requête express PHP
php envoie des données XML via curl et obtient des données XML
PHP génère parfaitement des documents Word, et des éléments HTML peuvent être ajoutés
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!