首頁  >  文章  >  php框架  >  swoole是異步的嗎

swoole是異步的嗎

(*-*)浩
(*-*)浩原創
2019-12-09 10:17:371766瀏覽

swoole是異步的嗎

swoole是PHP的非同步、平行、高效能網路通訊引擎,使用純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問題。

以上是swoole是異步的嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn