swoole是異步的嗎

swoole是異步的嗎

swoolephp異步、并行、高性能網絡通信引擎,使用純c語言編寫,提供了PHP語言的異步線程服務器,異步TCP/udp網絡客戶端,異步mysql,異步redis數據庫連接池,AsyncTask,消息隊列,毫秒定時器,異步文件讀寫,異步DNS查詢。

?swoole內置了http/websocket服務器端/客戶端、Http2.0服務器端。 ? ? ?(推薦學習: swoole視頻教程

Swoole可以廣泛應用于互聯網、移動通信、企業軟件、網絡游戲、物聯網、車聯網、智能家庭等領域。 使用PHP+Swoole作為網絡通信框架,可以使企業IT研發團隊的效率大大提升,更加專注于開發創新產品。

Swoole底層內置了異步非阻塞、多線程的網絡IO服務器。PHP程序員僅需處理事件回調即可,無需關心底層。

nginx/tornado/Node.JS等全異步的框架不同,Swoole既支持全異步,也支持同步。

什么情況下使用同步,什么情況下使用異步。這里說明一下。

我們不贊成用異步回調的方式去做功能開發,傳統的PHP同步方式實現功能和邏輯是最簡單的,也是最佳的方案。像node.js這樣到處callback,只是犧牲可維護性和開發效率。

但有些時候很適合用異步,比如FTP、聊天服務器,smtp,代理服務器等等此類以通信和讀寫磁盤為主,功能和業務邏輯其次的服務器程序。

“PHP的擴展函數API全是同步的”,這個說法并不正確,實際上同步阻塞的地方主要是網絡調用,文件讀寫。

例如mysql_query需要與mysql數據庫服務器通信,cURL需要調用網絡,file_get_contents需要讀寫文件,以及其他fopen/fwrite/fread/fgets/fputs這些都是阻塞的API。除此之外PHP的Array/String/mbstring等函數是非阻塞的。

swoole提供了異步的socket客戶端,異步的mysql,而且1.6.12還提供了異步文件讀寫和異步DNS查詢的功能。另外還提供了task/finish的API,完全可以解決阻塞IO問題。

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享