本文目錄一覽:
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多年的發展,在互聯網上可以搜到海量的參考資料供參考學習。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/184493.html