非同步 PHP 是什麼?

2020-07-16 10:05:57

同步程式設計與非同步程式設計的區別

在討論非同步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非阻塞並行框架。

推薦教學:《本文來自TW511.COMphp教學欄目,歡迎學習!

以上就是非同步 PHP 是什麼?的詳細內容,更多請關注TW511.COM其它相關文章!