您好,登錄后才能下訂單哦!
本篇內容主要講解“PHP的Swoole框架介紹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“PHP的Swoole框架介紹”吧!
PHP發展到現在,已經不是單純做個Web、寫寫業務邏輯了,我們也可以使用 PHP 可以編寫高性能的異步并發 TCP、UDP、Unix Socket、HTTP,WebSocket 服務。可以廣泛應用于互聯網、移動通信、微服務、企業軟件、云計算、網絡游戲、物聯網(IOT)、車聯網、智能家居等領域。
在異步網絡通信開發中有兩個用的比較多的框架,一個是swoole,另一個是workman,這個兩個有什么區別,我們下次可以再來分析,這次我們主要是對Swoole做一個基本的介紹。
Swoole是一個PHP的C擴展,可用來開發PHP的高性能高并發TCP/UDP Server。Swoole的網絡IO部分基于epoll/kqueue事件循環,是全異步非阻塞的。業務邏輯部分使用多進程同步阻塞方式來運行。這樣既保證了Server能夠應對高并發和大量TCP連接。又保證業務代碼仍然可以簡單的編寫。
Swoole1.6.2之后增加了異步支持,應用程序也可以像node.js一樣寫異步回調。
Swoole與Node.js相比更強大,支持同步/異步、多進程并行,Swoole提供了進程生命周期管理、內存保護機制,開發者無需考慮底層細節,專注于業務邏輯和功能的開發。
Swoole底層內置了異步非阻塞、多線程的網絡IO服務器。PHP程序員僅需處理事件回調即可,無需關心底層。與Nginx/Tornado/Node.js等全異步的框架不同,Swoole既支持全異步,也支持同步。
Swoole從2.0版本開始支持了內置協程,可以使用完全同步的代碼實現異步程序。PHP代碼無需額外增加任何關鍵詞,底層自動進行協程調度,實現異步。
Swoole是開源免費的自由軟件,授權協議是Apache2.0。企業和開發者均可免費使用Swoole的代碼,并且在Swoole之上所作的修改無需開源。
Swoole要求使用者必須具備一定的Linux/Unix環境編程基礎。
下面有幾個Swoole的模塊介紹:
強大的TCP/UDP Server框架,支持多線程,EventLoop,事件驅動,異步,Worker進程組,Task異步任務,毫秒定時器,SSL/TLS隧道加密。
Http\Server是Server的子類,內置了Http的支持
WebSocket\Server是Http\Server的子類,內置了WebSocket的支持
Redis\Server是Server的子類,內置了Redis服務器端協議的支持
子類可以調用父類的所有方法和屬性
TCP/UDP/UnixSocket客戶端,支持IPv4/IPv6,支持SSL/TLS隧道加密,支持SSL雙向證書,支持同步并發調用,支持異步事件驅動編程。
EventLoop API,讓用戶可以直接操作底層的事件循環,將socket,stream,管道等Linux文件加入到事件循環中。
eventloop接口僅可用于socket類型的文件描述符,不能用于磁盤文件讀寫
異步IO接口,提供了 異步文件系統IO,定時器,異步DNS查詢,異步MySQL等API,異步Http客戶端,異步Redis客戶端。
Timer:異步毫秒定時器,可以實現間隔時間或一次性的定時任務
swoole_async_read/swoole_async_write 文件系統操作的異步接口
異步回調API在4.4版本中已廢棄
Swoole在2.0開始內置協程(Coroutine)的能力,提供了具備協程能力IO接口(統一在命名空間Swoole\Coroutine\*)。
協程可以理解為純用戶態的線程,其通過協作而不是搶占來進行切換。相對于進程或者線程,協程所有的操作都可以在用戶態完成,創建和切換的消耗更低。Swoole可以為每一個請求創建對應的協程,根據IO的狀態來合理的調度協程,這會帶來了以下優勢:
開發者可以無感知的用同步的代碼編寫方式達到異步IO的效果和性能,避免了傳統異步回調所帶來的離散的代碼邏輯和陷入多層回調中導致代碼無法維護。
進程管理模塊,可以方便的創建子進程,進程間通信,進程管理。
強大的內存區管理工具,像C一樣進行指針計算,又無需關心內存的申請和釋放,而且不用擔心內存越界,底層全部做好了。
基于共享內存和自旋鎖實現的超高性能內存表。徹底解決線程,進程間數據共享,加鎖同步等問題。
Table的性能可以達到單線程每秒讀寫200W次
QQ公眾號
騰訊生活服務號(QQ公眾號)的業務邏輯層基本都是基于swoole開發完成。
營銷QQ
Swoole在營銷QQ項目中也得到了大量應用,如:增強版的消息網管server(tcp), 業務邏輯server(udp)。
百度地圖
百度地圖:http://map.baidu.com/
采用swoole+redis,基于swoole擴展,根據內部的需求,封裝了一套可擴展、高性的PHP server,已應用于多個業務模塊,提供高并發的kv數據查詢及業務數據的在線計算,每天億級的PV量
百度訂單中心
作為百度統一的訂單中心,承擔著百度各業務線訂單數據的歸集、存儲、挖掘、分析等工作,旨在向各業務線提供用戶完整的訂單數據;并以數據產品的形態,向各業務線提供基于用戶消費行為的運營工具和相關報告。
戰旗直播:http://www.zhanqi.tv
戰旗直播從單個laravel應用在高并發下經常502,后來用swoole + phalcon異步服務化架構重構,實現高可擴展及可用性,每天幾億級Hits。
虎牙直播:http://www.huya.com
虎牙直播APP基于Swoole實現了TCP長連接PUSH服務,日均活躍200萬用戶。TCP并發連接數超過40萬,收發消息數峰值超過10萬條每秒。
部門內多款移動APP使用swoole作為底層框架,實現了手機客戶端與服務器段長連接,直接通信的模式。大大提升了移動網絡下應用程序的用戶體驗。
到此,相信大家對“PHP的Swoole框架介紹”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。