本篇內容主要講解“PHP的Swoole框架介紹”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“PHP的Swoole框架介紹”吧!

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