PHP中流行的RPC框架有哪些,能否推荐一个适合长尾需求的?

2026-04-06 07:211阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1297个文字,预计阅读时间需要6分钟。

PHP中流行的RPC框架有哪些,能否推荐一个适合长尾需求的?

目录- 什么是RPC框架?- 远程调用原理- 远程调用的好处- RPC与Socket的区别- RPC与REST的区别- PHP中流行的RPC框架有哪些?- phpRPC 安装- 开始使用- Yar下载安装- 开始使用- 什么是RPC框架?

目录
  • 什么是RPC框架?
  • 远程调用原理
  • 远程调用的好处
  • RPC与Socket有什么区别?
  • RPC与REST有什么区别?
  • php中流行的rpc框架有哪些
    • phprpc
    • 安装
  • 开始使用
    • yar
      • 下载安装
      • 开始使用

    什么是RPC框架?

    通常我们调用一个php中的方法,比如这样一个函数方法: localAdd(10, 20),localAdd方法的具体实现要么是用户自己定义的,要么是php库函数中自带的,也就说在localAdd方法的代码实现在本地,它是一个本地调用!

    远程调用原理

    比如 A (client) 调用 B (server) 提供的remoteAdd方法:

    1.首先A与B之间建立一个TCP连接;

    2.然后A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去;

    3.B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd)并把结果30返回;

    4.A接受远程调用结果,输出30。

    RPC框架就是把我刚才说的这几点些细节给封装起来,给用户暴露简单友好的API使用。

    远程调用的好处

    解耦:当server需要对方法内实现修改时,client完全感知不到,不用做任何变更;这种方式在跨部门,跨公司合作的时候经常用到,并且方法的提供者我们通常称为:服务的暴露。

    RPC与Socket有什么区别?

    通过上面的简单阐述,好像RPC与Socket 好像啊。都是调用远程的方法,都是client/server模式,我之前也写了一篇文章: 细说socket 那他们有啥区别呢?

    RPC(远程过程调用)采用客户机/服务器模式实现两个进程之间相互通信。socket是RPC经常采用的通信手段之一,RPC是在Socket的基础上实现的,它比socket需要更多的网络和系统资源。除了Socket,RPC还有其他的通信方法,比如:127.0.0.1/server.php'); echo $client->HelloWorld(); ?>

    我们在执行以下client.php,如愿以偿的输出了:

    Hello Word!

    这样一个简单的Server/Clent交付就搞定了。虽然中间出了点差错,但是总体来说还是蛮简单易懂的!

    其他的更高级的用法可以参考官网的。

    yar

    yar 是国内著名的php大神鸟哥惠新宸的大作,在微博产品中已经开始使用。它也是一款rpc框架。它由于使用纯C编写的用于php的扩展,所以,效率应该是蛮高的,而且支持异步并行,这点还是赞的。

    下载安装

    官网下载:pecl.php.net/package/yar最新的版本 yar-1.2.4.tgz

    然后解压复制到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-dir>/include/curl/

    估计是我本机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

    成功之后,提示我们 yar.so 扩展在已经在/usr/local/php/lib/php/extensions/no-debug-zts-20100525/ 下了。

    我们vi编辑一下 php.ini ,最后面加上yar.so扩展,然后重启一下 apache 或者php-pfm就可以了。

    [root@localhost /]# vi /usr/local/php/etc/php.ini 

    [yar]

    extension=yar.so

    好。加好了后,我们需要重启下apache或者php-fpm

    重启apache

    [root@localhost /]# /usr/local/apache/bin/apachectl restart

    平滑重启php-fpm

    kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

    重启完毕后,打开phpinfo()页面,搜索一下,应该就能够看到yar了。

    PHP中流行的RPC框架有哪些,能否推荐一个适合长尾需求的?

    开始使用

    和其他的rpc框架一样,yar也是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("127.0.0.1/yar_server.php"); echo $client->api('helo word');

    像其他的 swoole,hprose等基本都是这个原理,只是看谁的功能更加,用起来更顺手罢了。

    以上就是详解php中流行的rpc框架的详细内容,更多关于php中流行的rpc框架的资料请关注自由互联其它相关文章!

    本文共计1297个文字,预计阅读时间需要6分钟。

    PHP中流行的RPC框架有哪些,能否推荐一个适合长尾需求的?

    目录- 什么是RPC框架?- 远程调用原理- 远程调用的好处- RPC与Socket的区别- RPC与REST的区别- PHP中流行的RPC框架有哪些?- phpRPC 安装- 开始使用- Yar下载安装- 开始使用- 什么是RPC框架?

    目录
    • 什么是RPC框架?
    • 远程调用原理
    • 远程调用的好处
    • RPC与Socket有什么区别?
    • RPC与REST有什么区别?
    • php中流行的rpc框架有哪些
      • phprpc
      • 安装
    • 开始使用
      • yar
        • 下载安装
        • 开始使用

      什么是RPC框架?

      通常我们调用一个php中的方法,比如这样一个函数方法: localAdd(10, 20),localAdd方法的具体实现要么是用户自己定义的,要么是php库函数中自带的,也就说在localAdd方法的代码实现在本地,它是一个本地调用!

      远程调用原理

      比如 A (client) 调用 B (server) 提供的remoteAdd方法:

      1.首先A与B之间建立一个TCP连接;

      2.然后A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去;

      3.B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd)并把结果30返回;

      4.A接受远程调用结果,输出30。

      RPC框架就是把我刚才说的这几点些细节给封装起来,给用户暴露简单友好的API使用。

      远程调用的好处

      解耦:当server需要对方法内实现修改时,client完全感知不到,不用做任何变更;这种方式在跨部门,跨公司合作的时候经常用到,并且方法的提供者我们通常称为:服务的暴露。

      RPC与Socket有什么区别?

      通过上面的简单阐述,好像RPC与Socket 好像啊。都是调用远程的方法,都是client/server模式,我之前也写了一篇文章: 细说socket 那他们有啥区别呢?

      RPC(远程过程调用)采用客户机/服务器模式实现两个进程之间相互通信。socket是RPC经常采用的通信手段之一,RPC是在Socket的基础上实现的,它比socket需要更多的网络和系统资源。除了Socket,RPC还有其他的通信方法,比如:127.0.0.1/server.php'); echo $client->HelloWorld(); ?>

      我们在执行以下client.php,如愿以偿的输出了:

      Hello Word!

      这样一个简单的Server/Clent交付就搞定了。虽然中间出了点差错,但是总体来说还是蛮简单易懂的!

      其他的更高级的用法可以参考官网的。

      yar

      yar 是国内著名的php大神鸟哥惠新宸的大作,在微博产品中已经开始使用。它也是一款rpc框架。它由于使用纯C编写的用于php的扩展,所以,效率应该是蛮高的,而且支持异步并行,这点还是赞的。

      下载安装

      官网下载:pecl.php.net/package/yar最新的版本 yar-1.2.4.tgz

      然后解压复制到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-dir>/include/curl/

      估计是我本机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

      成功之后,提示我们 yar.so 扩展在已经在/usr/local/php/lib/php/extensions/no-debug-zts-20100525/ 下了。

      我们vi编辑一下 php.ini ,最后面加上yar.so扩展,然后重启一下 apache 或者php-pfm就可以了。

      [root@localhost /]# vi /usr/local/php/etc/php.ini 

      [yar]

      extension=yar.so

      好。加好了后,我们需要重启下apache或者php-fpm

      重启apache

      [root@localhost /]# /usr/local/apache/bin/apachectl restart

      平滑重启php-fpm

      kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

      重启完毕后,打开phpinfo()页面,搜索一下,应该就能够看到yar了。

      PHP中流行的RPC框架有哪些,能否推荐一个适合长尾需求的?

      开始使用

      和其他的rpc框架一样,yar也是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("127.0.0.1/yar_server.php"); echo $client->api('helo word');

      像其他的 swoole,hprose等基本都是这个原理,只是看谁的功能更加,用起来更顺手罢了。

      以上就是详解php中流行的rpc框架的详细内容,更多关于php中流行的rpc框架的资料请关注自由互联其它相关文章!