本文目录一览:
php rpc好用吗,有什么优缺点?php rpc框架哪个好?
什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call)那什么是远程调用?通常我们调用一个php中的方法,比如这样一个函数方法: localAdd(10, 20),localAdd方法的具体实现要么是用户自己定义的,要么是php库函数中自带的,也就说在localAdd方法的代码实现在本地,它是一个本地调用!远程调用意思就是:被调用方法的具体实现不在程序运行本地,而是在别的某个远程地方。
远程调用原理
比如 A (client) 调用 B (server) 提供的remoteAdd方法:
首先A与B之间建立一个TCP连接;
然后A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去;
B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd)并把结果30返回;
A接受远程调用结果,输出30。
RPC框架就是把我刚才说的这几点些细节给封装起来,给用户暴露简单友好的API使用。
远程调用的好处
解耦:当server需要对方法内实现修改时,client完全感知不到,不用做任何变更;这种方式在跨部门,跨公司合作的时候经常用到,并且方法的提供者我们通常称为:服务的暴露。
RPC与Socket有什么区别?
通过上面的简单阐述,好像RPC与Socket 好像啊。都是调用远程的方法,都是client/server模式,我之前也写了一篇文章: 细说socket 那他们有啥区别呢?
RPC(远程过程调用)采用客户机/服务器模式实现两个进程之间相互通信。socket是RPC经常采用的通信手段之一,RPC是在Socket的基础上实现的,它比socket需要更多的网络和系统资源。除了Socket,RPC还有其他的通信方法,比如:http、操作系统自带的管道等技术来实现对于远程程序的调用。微软的Windows系统中,RPC就是采用命名管道进行通信。
RPC与REST有什么区别?
通过了解RPC后,我们知道是RPC是client/server模式的,调用远程的方法,REST也是我们熟悉的一套API调用协议方法,它也是基于client/server模式的,调用远程的方法的,那他俩又有啥区别呢?
REST API 和 RPC 都是在 Server端 把一个个函数封装成接口暴露出去,以供 Client端 调用,不过 REST API 是基于HTTP协议的,REST致力于通过http协议中的POST/GET/PUT/DELETE等方法和一个可读性强的URL来提供一个http请求。而 RPC 则可以不基于 HTTP协议
因此,如果是后端两种语言互相调用,用 RPC 可以获得更好的性能(省去了 HTTP 报头等一系列东西),应该也更容易配置。如果是前端通过 AJAX 调用后端,那么用 REST API 的形式比较好(因为无论如何也避不开 HTTP 这道坎)。
php中流行的rpc框架有哪些
既然php是世界上最好的语言,那php中流行的RPC框架有哪些呢?
先列举下: phprpc,yar, thrift, gRPC, swoole, hprose
因为时间和精力有限,不可能一个一个的去学习和使用,我选几个世面上用的最多的几个用下吧。因为RPC原理是一样的,都是Client/Server模式,只是每个框架的使用方式不一样而已。
hyperf搭建微服务 - 1
UserService.php
UserServiceInterface.php
config/autoload/services.php
UserController.php
UserServiceInterface.php
修改config/routes.php为如下:
输出:{"id":5,"name":"黄翠刚"}
运用PHP可以做什么项目啊
可以做一切。PHP 主要专注于服务器端脚本,所以你可以完成其他 CGI 程序所能够完成的一切,比如数据收集、生成动态页面内容,或者发送和接收 Cookie。但是 PHP 能够做更多的事情。
使用 PHP 脚本的三个主要领域。
服务器端脚本。这是 PHP 最传统也是最主要的目标领域。你需要三种事物来完成这项工作。PHP 解析器(CGI 或者服务器模块),一个 Web 服务器和一个 Web 浏览器。你需要运行 Web 服务器,以一个已连接的 PHP 安装。你可以使用 Web 浏览器来访问 PHP 程序输出,通过服务器查看 PHP 页面。所有这些都可以在你的本地机器中运行,如果你只是体验 PHP 编程的话。关于更多信息请参考安装指导部分。
命令行脚本。你可以在无需任何服务器或者浏览器的情况下来运行 PHP 脚本。你只需要 PHP 解析器来用于这种方式。这是常规脚本扩展使用 cron(在 Unix 或者 Linux 中)或者 Task Scheduler(在 Windows 中)时的理想用法。这些脚本同样可以用于简单的文字处理任务中。关于更多信息,请参考:[PHP 的命令行用法]。
编写桌面应用程序。PHP 大概不是创建拥有图形用户界面的桌面应用程序时最好的编程语言,但是如果你非常了解 PHP,并且愿意在你的客户端应用程序中使用一些高级 PHP 特征,你同样可以使用 PHP-GTK 来编写这样的程序。你同样拥有通过这种方式来编写跨平台应用程序的能力。PHP-GTK 是一种 PHP 扩展,并没有包括在主要的发行中。如果你对 PHP-GTK 感兴趣,可以访问它自己的网站。
PHP 可以在所有主流操作系统中使用,包括 Linux、许多种不同的 Unix(包括 HP-UX,Solaris 和 OpenBSD)、Microsoft Windows、Mac OS X,RISC OS 等等。PHP 现在同样支持大部分的 Web 服务器。这包括 Apache、Microsoft Internet Information Server、Personal Web Server、Netscape 和 iPlanet Server、Oreilly Websita Pro Server、Caudium、Xitami,OmniHTTPd 等等。主流的服务器以一种模块来提供 PHP 服务,而其他的则支持 CGI 标准,PHP 可以作为一个 CGI 处理器来工作。
通过使用 PHP,你将拥有选择操作系统和 Web 服务器的自由。此外,你同样可以选择使用过程编程或者面向对象编程,还是它们的混合体。虽然并不是每种标准的 OOP 特征都在 PHP 4 中被实现,多数代码库和大型应用程序(包括 PEAR 库)都是使用 OOP 代码所编写的。PHP 5 弥补了 PHP 4 中与 OOP 相关的弱点,并且引入了一个完整的对象模型。
使用 PHP 你并不局限于输出 HTML。PHP 的能力包括输出图片,PDF 文件以及甚至是被敏捷生成的 Flash 影片(使用 libswf 和 Ming)。你同样可以输出任何简单的文字,比如 XHTML 和任何其他 XML 文件。PHP 可以自动生成这些文件,并且把它们保存在文件系统中,来代替它们的打印输出,为你的动态内容形成一个服务器端缓存。
PHP 中最强大并且最重要的特征之一就是它提供广泛的数据库支持。编写启用了数据库支持的 Web 页面是如此的简单。以下列表就是当前被支持的数据库:
Adabas D
dBase
Empress
FilePro(只读)
Hyperwave
IBM DB2
Informix
Ingres
InterBase
FrontBase
mSQL
Direct MS-SQL
MySQL
ODBC
Oracle(OCI7 和 OCI8)
Ovrimos
PostgreSQL
SQLite
Solid
Sybase
Velocis
Unix dbm
我们同样拥有一个数据库抽象扩展(命名为 PDO)来允许你通过该扩展来透明地使用任何被支持的数据库。另外 PHP 还支持 ODBC(Open Database Connection 标准),因此你能够连接到任何支持这个世界级标准的其他数据库。
PHP 同样支持与使用 LDAP、IMAP、SNMP、NNTP、POP3、HTTP、COM(在 Windows 中)的其他服务的对话。你同样可以打开原始的网络套接字并且使用任何其他协议与之交互。PHP 还支持所有 Web 编程语言可视化之间复杂的 WDDX 数据交互。与交互连接的对话,PHP 还支持 Java 对象的例示并且透明地把它们当成 PHP 对象来使用。你同样可以使用我们的 CORBA 扩展来访问远程对象。
PHP 拥有非常有用的文字处理特征,用 POSIX Extended 或者 Perl 正则表达式来解析 XML 文件。关于解析并且访问 XML 文档,PHP 4 还支持 SAX 和 DOM 标准,并且你同样可以使用 SXLT 扩展来转换 XML 文档。PHP 5 标准化了 libxml2 实体基础的所有 XML 扩展并且扩展特征集添加了 SimpleXML 和 XMLReader 支持。
最后,但不是至少,我们还拥有许多其他有趣的扩展,mnoGoSearch 搜索引擎功能、IRC Gateway 功能、许多压缩实用工具(gzip、bz2,zip)、日历转换、翻译······
与你在该页中所见到的关于 PHP 所提供的特征和益处的不完全列表一样。阅读关于 PHP 的安装部分,并且查看各种扩展所提及的功能参考部分。
php为什么不适合做微服务
php不适合做微服务原因:例如与硬件通讯.至于开发的话,你可以用swoole扩展或者grpc。
PHP毕竟是CGI脚本,很多底层的驱动级的工作还不能做,而且主要是其面向对象不够完善,在SOA上的应用还是有些不足。当然因为PHP能够做些位计算什么的,可以很方便的做些帧协议的操作,比如Radius协议的实现等。
快捷高效:
PHP的内核是C语言编写的基础好效率高,可以用C语言开发高性能的扩展组件;PHP的核心包含了数量超过1000的内置函数,功能应有尽有很全面,开箱即用程序代码简洁;PHP数组支持动态扩容,支持以数字、字符串或者混合键名的关联数组,能大幅提高开发效率。
PHP是一门弱类型语言,程序编译通过率高,相对其他强类型语言开发效率快;PHP天然热部署,在php-fpm运行模式下代码文件覆盖即完成热部署;PHP经过20多年的发展,在互联网上可以搜到海量的参考资料供参考学习。