php 에서 유행 하 는 rpc 프레임 워 크 상세 설명
일반적으로 우 리 는 phop 의 방법 을 호출 합 니 다.예 를 들 어 이러한 함수 방법:localAdd(10,20),localAdd 방법의 구체 적 인 실현 은 사용자 가 정의 하거나 phop 라 이브 러 리 함수 에서 자체 적 으로 가 져 온 것 입 니 다.즉,localAdd 방법의 코드 가 로 컬 에서 이 루어 진 것 이 라 고 할 수 있 습 니 다.이것 은 로 컬 호출 입 니 다!
원 격 호출 원리
예 를 들 어 A(client)가 B(server)가 제공 하 는 reoteAdd 방법 을 호출 합 니 다.
1.먼저 A 와 B 사이 에 TCP 연결 을 만 듭 니 다.
2.그리고 A 는 호출 할 방법 명(여 기 는 remoteAdd)과 방법 매개 변수(10,20)를 바이트 흐름 으로 정렬 하여 보 냅 니 다.
3.B.A 가 보 낸 바이트 흐름 을 받 아들 인 다음 에 목표 방법 명,방법 파 라 메 터 를 역 직렬 화하 여 해당 하 는 방법 으로 호출(local Add 일 수 있 음)하고 결 과 를 30 으로 되 돌려 줍 니 다.
4.A 원 격 호출 결 과 를 받 아들 여 30 을 출력 한다.
RPC 프레임 워 크 는 내 가 방금 말 한 이 몇 가지 세부 사항 을 밀봉 하여 사용자 에 게 간단 하고 우호 적 인 API 사용 을 노출 시 키 는 것 이다.
원 격 호출 의 장점
디 결합:server 가 방법 내 수정 이 필요 할 때 client 는 전혀 감지 되 지 않 고 변경 하지 않 아 도 됩 니 다.이런 방식 은 부 서 를 뛰 어 넘 고 회 사 를 뛰 어 넘 을 때 자주 사용 되 며 방법의 제공 자 는 우 리 는 흔히 서비스의 노출 이 라 고 부른다.
RPC 와 Socket 은 어떤 차이 가 있 습 니까?
위의 간단 한 설명 을 통 해 RPC 와 Socket 이 비슷 한 것 같 습 니 다.모두 원 격 으로 호출 하 는 방법 입 니 다.모두 client/server 모드 입 니 다.저도 전에 글 을 썼 습 니 다.socket 을 자세히 말 하면 그들 은 어떤 차이 가 있 습 니까?
RPC(원 격 프로 세 스 호출)는 클 라 이언 트/서버 모드 로 두 프로 세 스 간 의 상호 통신 을 실현 합 니 다.socket 은 RPC 가 자주 사용 하 는 통신 수단 중 하나 로 RPC 는 Socket 을 바탕 으로 이 루어 집 니 다.socket 보다 더 많은 네트워크 와 시스템 자원 이 필요 합 니 다.Socket 을 제외 하고 RPC 는 http,운영 체제 자체 의 파이프 등 기술 로 원 격 프로그램 에 대한 호출 을 실현 하 는 다른 통신 방법 도 있다.마이크로소프트 의 윈도 시스템 에서 RPC 는 명칭 파 이 프 를 이용 하여 통신 을 한다.
RPC 와 REST 는 어떤 차이 가 있 습 니까?
RPC 를 알 아 본 후에 우 리 는 RPC 가 client/server 모드 라 는 것 을 알 게 되 었 습 니 다.원 격 으로 호출 하 는 방법 입 니 다.REST 도 우리 가 잘 아 는 API 호출 프로 토 콜 방법 입 니 다.이것 도 client/server 모드 를 바탕 으로 원 격 으로 호출 하 는 방법 입 니 다.그러면 그들 둘 은 어떤 차이 가 있 습 니까?
REST API 와 RPC 는 모두 서버 에서 하나의 함 수 를 인터페이스 로 봉 하여 노출 시 켜 클 라 이언 트 에서 호출 할 수 있 습 니 다.그러나 REST API 는 HTTP 프로 토 콜 을 기반 으로 합 니 다.REST 는 http 프로 토 콜 의 POST/GET/PUT/DELETE 등 방법 과 가 독성 이 강 한 URL 을 통 해 http 요청 을 제공 하 는 데 주력 합 니 다.RPC 는 HTTP 프로 토 콜 을 기반 으로 하지 않 을 수 있 습 니 다.
따라서 백 엔 드 두 언어 가 서로 호출 된다 면 RPC 로 더 좋 은 성능(HTTP 헤더 등 일련의 것 을 생략)을 얻 을 수 있 고 쉽게 설정 할 수 있 을 것 이다.프론트 엔 드 가 AJAX 를 통 해 백 엔 드 를 호출 하 는 것 이 라면 REST API 형식 을 사용 하 는 것 이 좋 습 니 다(HTTP 라 는 고 비 를 도저히 피 할 수 없 기 때 문 입 니 다).
php 에서 유행 하 는 rpc 프레임 워 크 는 어떤 것 이 있 습 니까?
phop 이 세계 에서 가장 좋 은 언어 인 만큼 phop 에서 유행 하 는 RPC 프레임 워 크 는 어떤 것 이 있 습 니까?
먼저 다음 열거:phprpc,yar,thrift,gRPC,swoole,hprose
시간 과 정력 이 제한 되 어 있 기 때문에 하나씩 공부 하고 사용 할 수 없습니다.저 는 세상 에서 가장 많이 쓰 는 몇 개 를 골 라 서 사용 하 겠 습 니 다.RPC 원 리 는 같 기 때문에 모두 Client/server 모드 이 고 프레임 마다 사용 방식 이 다 를 뿐 입 니 다.
주로 phprpc 와 yar 를 설명해 주세요.
phprpc
먼저 홈 페이지 에서 최신 안정 판 phprpc:링크 를 다운로드 하여 압축 을 풀 어 줍 니 다.
설치 하 다.
우 리 는 안에 많은 파일 과 폴 더 가 있 는 것 을 발견 할 것 이다.구 조 는 다음 과 같다.
그냥 설치 할 게 요.암호 화 능력 이 빠 르 기 때문에 좋 은 일이 다.
설치 절 차 는 다음 과 같 습 니 다.먼저 pecl 아래 의 xxtea 폴 더 를 phop 소스 코드 의 etx 디 렉 터 리 로 복사 합 니 다./lamp/phop-5.4.11/ext 아래.그리고 phpize 로 확장 해서 다시 컴 파일 합 니 다.
[root@localhost /]# cd /lamp/php-5.4.11/ext/xxtea
[root@localhost xxtea]# /usr/local/php/bin/phpize
[root@localhost xxtea]# ./configure --enable-xxtea=shared --with-php-config=/usr/local/php/bin/php-config
make && make install
OK,컴 파일 이 완료 되 었 습 니 다.xx tea.so 가/usr/local/phop/lib/phop/extensions/no-debug-zts-2010525/xx tea.so 에 있 음 을 알려 줍 니 다.
다음은 php.ini 의 마지막 에 이 xxtea.so 를 더 해 야 합 니 다.
[root@localhost /]# vi /usr/local/php/etc/php.ini
[xxtea]
extension=xxtea.so
추가 후,우 리 는 apache 나 phop-fpm 를 다시 시작 해 야 합 니 다.
apache 다시 시작
[root@localhost /]# /usr/local/apache/bin/apachectl restart
php-fpm 부 드 럽 게 다시 시작
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
재 부팅 이 끝 난 후 phopinfo()페이지 를 열 고 검색 하면 xxtea 를 볼 수 있 을 것 입 니 다.
사용 시작
먼저 간단 한 예 를 들 면 phprpc 도 서버 쪽 과 클 라 이언 트 로 나 뉜 다.그래서 폴 더 에 대응 하 는 것 은 phprpcserver.php 와 phprpcclient.php
우 리 는 홈 페이지 의 몇 가지 예 를 참고 하여 연습 해 보 자.
server.php 서버:이렇게 쓰 면 가장 간단 한 helloword 인 터 페 이 스 를 완성 합 니 다.
<?php
include ("phprpc/phprpc_server.php");
function HelloWorld() {
return 'Hello World!';
}
$server = new PHPRPC_Server();
$server->add('HelloWorld');
$server->start();
server.php 를 실행 하 다 니,잘못 보고 하 다 니!!!PHP Strict Standards: Non-static method PHPRPC_Server::initSession()....
Cannot redeclare gzdecode().....
구 글 은 먼저 phprpc 를server.php 의 413 줄 initSession()을 static function 으로 변경 합 니 다.
static function initSession() {
****
}
이렇게 큰 오류,phprpc 는 어떻게 발 표 했 습 니까!!copat.phop 의 71 번 째 줄 의 gzdecode()함수 에서 phop 5.4 는 이미 이 함 수 를 실현 하 였 습 니 다.이렇게 함 수 는 다시 써 서 잘못 보 고 했 기 때문에 판단 을 추가 합 니 다.
if (!function_exists('gzdecode')) {
// gzdecode
}
server.php 를 다시 실행 합 니 다.잘못 신고 하지 않 습 니 다.출력:phprpc_functions="YToxOntpOjA7czo5OiJoZWxsb3dvcmQiO30=";
우 리 는 다음 에 클 라 이언 트 client.php 를 써 서 어떻게 쓰 는 지 볼 까요?
<?php
include ("phprpc/phprpc_client.php");
$client = new PHPRPC_Client('http://127.0.0.1/server.php');
echo $client->HelloWorld();
?>
우 리 는 다음 client.php 를 실행 하고 있 습 니 다.원 하 는 출력 을 실 행 했 습 니 다:Hello Word!
이렇게 간단 한 서버/렌즈 를 교부 하면 됩 니 다.비록 중간 에 약간의 착오 가 생 겼 지만,전체적으로 말하자면 매우 간단 하고 이해 하기 쉽다.
다른 더 고 급 스 러 운 용법 은 홈 페이지 를 참고 할 수 있다.
yar
Yr 는 국내 에서 유명한 phop 대신 새 형 혜 신 왕 의 대작 으로 웨 이 보 제품 에서 이미 사용 되 기 시작 했다.그것 도 rpc 프레임 워 크 입 니 다.순수 C 로 작 성 된 phop 확장 을 사용 하기 때문에 효율 이 높 을 것 입 니 다.또한 비동기 병행 을 지원 한 다 는 점 이 좋 습 니 다.
다운로드 설치
홈 페이지 다운로드:http://pecl.php.net/package/yar최신 버 전
그리고 php 원본 코드 에 복 사 된 etx 디 렉 터 리:/lamp/php-5.4.11/ext 아래.그리고 phpize 로 확장 해서 다시 컴 파일 합 니 다.
[root@localhost yar-1.2.4]# /usr/local/php/bin/phpize
[root@localhost yar-1.2.4]# ./configure --with-php-config=/usr/local/php/bin/php-config
그런데 문제 가 생 겼 어 요.힌트,curl 에 문제 가 있어 요.
configure: error: Please reinstall the libcurl distribution - easy.h should be in
제 가 이 컴퓨터 curl 에 문제 가 있 는 것 같 습 니 다.그럼 yum 으로 설치 해 주세요.
yum -y install curl-devel
curl 을 설치 한 후에 계속 컴 파일 하고 설치 하면 문제 가 없습니다.
[root@localhost yar-1.2.4]# /usr/local/php/bin/phpize
[root@localhost yar-1.2.4]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@localhost yar-1.2.4]# make && make install
성공 후,Yr.so 확장 이/usr/local/phop/lib/phop/extensions/no-debug-zts-2010525/에 있 음 을 알려 줍 니 다.
우리 vi 는 phop.ini 를 편집 하고 맨 뒤에 Yr.so 확장 을 추가 한 다음 apache 나 phop-pfm 를 다시 시작 하면 됩 니 다.
[root@localhost /]# vi /usr/local/php/etc/php.ini
[yar]
extension=yar.so
네.추가 후,우 리 는 apache 나 phop-fpm 를 다시 시작 해 야 합 니 다.
apache 다시 시작
[root@localhost /]# /usr/local/apache/bin/apachectl restart
php-fpm 부 드 럽 게 다시 시작
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
재 부팅 이 끝 난 후 phopinfo()페이지 를 열 고 검색 하면 Yr 를 볼 수 있 을 것 입 니 다.
사용 시작
다른 rpc 프레임 워 크 와 마찬가지 로 Yr 도 server/client 모드 이기 때문에 우리 도 마찬가지 로 간단 한 예 를 들 어 어떻게 호출 하 는 지 설명 하기 시작 합 니 다.
yar_server.php 는 서버 쪽 을 표시 합 니 다.
<?php
class API {
public function api($parameter, $option = "foo") {
return $parameter;
}
protected function client_can_not_see() {
}
}
$service = new Yar_Server(new API());
$service->handle();
자,브 라 우 저 에서 실행 하면 다음 그림 과 같은 출력 이 나타 납 니 다.고 급 스 러 워!!새 형 은 이렇게 하 는 용 도 는 이 rpc 가 얼마나 많은 인 터 페 이 스 를 제공 하 는 지 한눈 에 알 수 있 고 api 문 서 를 생략 할 수 있다 고 말 했다.자,우리 yar 쓰기 시작 합 시다.client.php 이것 은 클 라 이언 트 입 니 다:
$client = new Yar_Client("http://127.0.0.1/yar_server.php");
echo $client->api('helo word');
다른 swoole,hprose 등 은 기본적으로 이 원리 입 니 다.누구의 기능 이 더 좋 고 사용 하기에 더 편 할 뿐 입 니 다.이상 은 phop 에서 유행 하 는 rpc 프레임 워 크 에 대한 상세 한 내용 입 니 다.phop 에서 유행 하 는 rpc 프레임 워 크 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.