업무는 gRPC를 이용하기 때문에 본인은 윈도10을 이용하지만 리눅스는 기본적으로 운영절차가 같다.
직접 주제로 들어가 몇 부분으로 나누다
1.Protoc 다운로드
다운로드 주소: https://github.com/google/protobuf/releaseS
여기서 사용하는 바이너리 파일, 해당 플랫폼을 선택하여 다운로드합니다.
https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protoc-3.7.1-win64.zip
압축을 풀면 bin폴더 아래에 protoc.exe가 있습니다.D:\Program Files에 넣을게요\protoc-3.7.1-win64\bin 이하, 그리고시스템 환경 변수 Path에 추가하시면 protoc 명령을 사용할 수 있습니다. protoc --version 성공 여부를 확인합니다.(이걸음이중요하게삶에사용한다)protobuf 파일의 PHP 코드로 사용됨)
2, protocol buffers 파일 작성
어떻게 쓰는지는 Protobuf3 언어 안내서를 보십시오.먼저 testgrpc_com을 위한 프로젝트를 만듭니다. 내 위치는 E:\\ www\ testgrpc_com입니다. 프로젝트 아래에 xuexitest.proto를 간단히 적습니다
syntax = "proto3"; // proto 버전 지정
package xuexitest; // 지정 번들 이름
//Xuexitest 서비스 정의
service Xuexitest {
//SayTest 메서드 정의
rpc SayTest(TestRequest) returns (TestReply) {}
}
//TestRequest 요청 구조
message TestRequest {
int64 typeid = 1;
}
//TestReply 응답 구조
message TestReply {
//데이터 형식 되돌리기
message GetData {
int64 id = 1;
string name = 2;
}
repeated GetData getdataarr = 1;
}
3. PHP 다운로드에 대한 gRPC 확장과 protobuf 확장
PHP의 gRPC 확장: http://pecl.php.net/package/gRPC
pHP의 protobuf 확장: http://pecl.php.net/package/protobuf
참고: 1, PHP의 protobuf 확장에는 윈도가 없습니다버전입니다. 하지만 사용하는데 영향을 주지 않는 것은 느린 실행입니다. (composer를 사용하여 protobuf를 로드합니다.) 클래스 라이브러리, 아래 composer.json 프로필을 보십시오)
비고: 2, PHP 확장 설치 방법은 여기서 설명하지 않는다.
4. protocol buffers 파일 컴파일
xuexitest.proto 컴파일 proto 사용c --php_out=. xuexitest.proto는 다음을 생성합니다.
5. PHP를 사용하는 composer
먼저 composer를 설치하고 관리 및 추가하기PHP를 탑재한 클래스 라이브러리의 설치 방법에 대해서는 여기서 말하지 않겠습니다.(이 단계는 Grpc와 protobuf의 PHP 라이브러리 의존성을 해결하는 데도 중요합니다)
프로젝트에 composer.json 쓰기 방금 컴파일된 protocol buffers 파일 아래에 놓기
{
"name": "grpc-go-php",
"require": {
"grpc/grpc": "^v1.3.0",
"google/protobuf": "^v3.3.0"
},
"autoload":{
"psr-4":{
"GPBMetadata\\":"GPBMetadata/",
"Xuexitest\\":"Xuexitest/"
}
}
}
6, Composer를 사용하여 PHP 코드 다운로드
1. 프로젝트의 디렉터리로 이동합니다. 예:E:\ww\testgrpc_com에서 주소 표시줄에 cmd를 입력하여 반송합니다
2.명령 프롬프트(검은 창)에 composer install을 입력하고 다운로드가 완료될 때까지 기다립니다
7. PHP를 정의하는 gRPC 단자
프로젝트에서 Xuexitest 텍스트폴더에 새 Xuexitest Client.php 파일
<?php
namespace Xuexitest;
/**
* service Xuexitest{}
* gprc 정의 Xuexitest 서비스) 클라이언트
*/
class XuexitestClient extends \Grpc\BaseStub{
public function __construct($hostname, $opts, $channel = null) {
parent::__construct($hostname, $opts, $channel);
}
/**
* rpc SayTest(TestRequest) returns (TestReply) {}
* 메서드 이름은 (gprc가 Xuexitest 서비스를 정의함) 메서드와 같습니다
* 서비스를 요청하고 응답하는 데 사용
*/
public function SayTest(\Xuexitest\TestRequest $argument,$metadata=[],$options=[]){
// (/xuexitest.Xuexitest/SayTest) 서비스를 요청하는 서비스입니다. 기본적으로 proto 파일 정의와 동일합니다
// (\Xuexitest\TestReply) proto 파일 정의와 같은 응답 정보입니다
return $this->_simpleRequest('/xuexitest.Xuexitest/SayTest',
$argument,
['\Xuexitest\TestReply', 'decode'],
$metadata, $options);
}
}
8,PHP 실행파일 작성
프로젝트 아래에 새 xuexitest.php
?php
//composer의 자동 로드 가져오기
require __DIR__ . '/vendor/autoload.php';
//서비스 측 연결용
$client = new \Xuexitest\XuexitestClient('127.0.0.1:50052', [
'credentials' => Grpc\ChannelCredentials::createInsecure()
]);
//TestRequest 요청 클래스 인스턴스화
$request = new \Xuexitest\TestRequest();
$request->setTypeid(1);
//원격 서비스 호출
$get = $client->SayTest($request)->wait();
//배열 되돌리기
//$reply TestReply 대상입니다
//$status 배열입니다
list($reply, $status) = $get;
//배열
$getdata = $reply->getGetdataarr();
foreach ($getdata as $k=>$v){
echo $v->getId(),'=>',$v->getName(),"\n\r";
}
9. 빨리 집행하라
'개발 꿀팁 > PHP' 카테고리의 다른 글
PHP 환경 구축-Windows 시스템에서의 PHP 환경 구축 (0) | 2022.07.20 |
---|---|
운영유선항목경험예(참고) (0) | 2022.07.20 |
리눅스 초기 php 환경 구축 (미니멀!) (0) | 2022.07.20 |
Jpom을 사용하여 프로젝트를 서버 튜토리얼에 빠르게 게시하기 (0) | 2022.07.20 |
phpqrcode.php를 사용하여 QR코드를 생성하여 배경 그림으로 통합 (0) | 2022.07.20 |