首頁  >  文章  >  後端開發  >  異步 PHP 是什麼?

異步 PHP 是什麼?

Guanhui
Guanhui轉載
2020-06-18 17:58:293602瀏覽

異步 PHP 是什麼?

同步程式設計與非同步程式設計的差異

在討論非同步PHP的優點之前,讓我們先快速回顧一下同步程式設計模型和非同步程式設計模型之間的差異。同步程式碼是逐行順序執行的。必須先完

成前面的任務,然後才能開始另一個任務。在非同步程式碼中,可以同時完成多個任務,這可以大大提高應用程式效能和使用者體驗。

相關課程推薦:《PHP程式設計入門到精通

#什麼是同步PHP?

同步PHP是指使用同步模型編寫的PHP程式碼。 PHP最初是為了支援同步開發而創建的,因此大多數PHP開發人員習慣使用該語言編寫同步程式碼。使用Apache的mod_php或使用Apache或Nginx的php-fpm進行Prefork。

你在找PHP的基礎教學嗎?請參閱此 blog, PHP開發基礎:什麼是PHP,為什麼如此流行,以及PHP的優點是什麼?

什麼是非同步PHP?

非同步PHP是指使用非同步模型編寫的PHP程式碼。透過使用諸如Swoole之類的擴展,或諸如ReactPHP之類的PHP框架,您可以使PHP使用事件循環非同步地接受請求和回應。

同步和非同步PHP程式設計的主要區別是什麼呢?

#在許多應用程式中,CPU在I / O任務期間處於空閒狀態的時間很多。非同步PHP思路是透過使非阻塞I / O任務在後台運行,在CPU等待完成I / O所需的資料和指令時處理其他任務,充分利用所有可用的CPU週期來執行其他任務。 同步PHP,CPU將只處理I / O任務。當前任務完成後,繼續處理佇列中的下一個任務。

與同步PHP編寫的應用程式相比,使用非同步PHP可以實現閃電般的性能。。在某些基準測試中, 相較於在同步程式碼中使用類似 php-fpm的進程加速器,使用Swoole啟用非同步PHP可以將吞吐量提升100倍。這就是為什麼php-fpm不支援使用類似Websockets協定進行非同步即時通訊的原因。

你應該使用哪一個PHP?

與大多數有關運行、web伺服器和一般的程式設計問題一樣,不同的案例會決定是使用同步PHP還是非同步PHP。要使用非同步PHP,你的程式碼必須支援它。 PHP開發人員習慣使用的大多數的擴充都會阻塞進程的呼叫(也稱為I/O阻塞),這使得非同步模型不可實現。

例如,要利用Swoole,當遇到一個I/O請求呼叫時,它需要將該呼叫傳送到後台,然後繼續執行下一條指令。當I/O調用返回資料時,Swoole需要將控制權歸還給已經傳送到後台的I/O調用,以便它可以控制請求資料給進程。重寫你的程式碼去支援非同步進程可能需要一些重構才能工作。但是,將來你節省下來的時間可能是值得的。

開始非同步PHP專案

由於你寫的程式碼方式要支援非同步進程,你必須利用一個可以這麼做的專案。這裡有我們的前三個建議:

  • Swoole – 協同PHP非同步程式設計框架。

  • Reactphp – PHP的事件驅動、非阻塞 I/O。

  • Amphp – PHP非阻塞並發框架。

推薦教學:《本文來自php中文網php教學欄目,歡迎學習!

#

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

陳述:
本文轉載於:learnku.com。如有侵權,請聯絡admin@php.cn刪除