>  기사  >  백엔드 개발  >  PHP에서 protobuf를 사용하는 방법을 빠르게 가르쳐주세요.

PHP에서 protobuf를 사용하는 방법을 빠르게 가르쳐주세요.

藏色散人
藏色散人앞으로
2021-11-18 14:30:255663검색
PHP에서 protobuf(v3)를 사용하여 직렬화 및 역직렬화를 수행하고, 설치부터 사용까지 어떤 단계가 필요한지, 어떤 문제에 주의해야 하는지 알아보세요.

운영 환경Centos7.8

php7.4


protobuf(v3)进行序列化和反序列化,从安装到使用需要进行哪些步骤,注意哪些问题。

操作环境
Centos7.8
php7.4

安装

github上搜索google/protobuf,找到官方源库文档,找到对应的PHP文档,按照官方文档去进行操作。

文档中安装涉及了两个部分,一个是安装protobuf的C扩展,另一个是依赖包google/protobuf

C扩展的安装使用pecl命令(需要使用find / -name pecl查找,安装的路径并没有在环境变量中);

除此之外还依赖其他的命令需要先行安装,C扩展下载安装的路径不符合预期(我的php使用remi-php的库安装,路径和原始镜像的默认设置不同);

之后需要对protobuf.so建立软链接;

之后使用composer安装依赖包即可。

接下来还需要代码生成器protoc,[proto的安装],解析定义文件*.proto并生成对应php代码,在项目中使用,需要引入对应的代码才可以,需要变更composer.json文件增加autoload配置,如果是测试,也可以手动require

使用

使用主要分为两点,一个是序列化,另一个是反序列化。【推荐:PHP视频教程

$pb=new Demo();
$pb->setName('demo');

//序列化,数据不可看
$string=$pb->serializeToString();

//序列化,数据可看
$string=$pb->serializeToJsonString();

//反序列化
$pb=new Demo();
//从db中获取到的序列化值,反序列化赋值给$pb,然后就可以正常使用
$pb->mergeFromString($string);
$pb->mergeFromJsonString($string);

$pb->getName();//输出demo

扩展

不同版本的protobuf설치

공식을 찾으려면 github에서 google/protobuf를 검색하세요. 소스 라이브러리 문서, 해당 PHP 문서를 찾아 공식 문서에 따라 작동합니다.

문서의 설치에는 두 부분이 포함됩니다. 하나는 protobuf의 C 확장을 설치하는 것이고, 다른 하나는 종속성 패키지 google/protobuf를 설치하는 것입니다. C 확장 프로그램을 설치하려면 pecl 명령을 사용하세요(찾으려면 find / -name pecl를 사용해야 합니다. 설치 경로는 환경 변수에 없습니다).

🎜또한 먼저 설치해야 하는 다른 명령에 의존합니다. C 확장을 다운로드하고 설치하는 경로가 기대에 미치지 못합니다. (내 phpremi-의 라이브러리 설치를 사용합니다. php이고 경로는 원본 이미지의 기본값과 동일합니다. 설정이 다릅니다. 🎜🎜 이후에는 🎜🎜 이후에 protobuf.so에 대한 소프트 링크를 설정해야 합니다. composer를 사용하여 종속성 패키지를 설치할 수 있습니다. 🎜🎜 다음으로 코드 생성기 protoc, [proto 설치]가 필요하고 정의 파일 *.proto를 구문 분석하고 해당 php 코드를 생성합니다. , 프로젝트에서 사용하려면 해당 코드를 도입해야 합니다. 테스트용이라면 autoload 구성을 추가하기 위해 composer.json 파일을 변경해야 합니다. , 수동으로 requirecode>할 수도 있습니다. 🎜🎜🎜🎜사용법🎜🎜사용법은 크게 두 가지로 나누어집니다. 하나는 직렬화이고 다른 하나는 역직렬화입니다. [권장: PHP 동영상 튜토리얼]🎜rrreee
확장🎜다른 버전의 protobuf는 호환되지 않습니다. 버전 변환이 필요한 경우 블로그 [php에서 protobuf 사용] PHP 문서 PHP 문서🎜를 참조하세요. /github.com/protocolbuffers/protobuf/tree/master/php                                                            

위 내용은 PHP에서 protobuf를 사용하는 방법을 빠르게 가르쳐주세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제