摘要:之后協程化支持已經完善并且支持大量的擴展自動協程化一些基于的框架也蓬勃發展光看著文檔就讓人躍躍欲試但是對于現有舊項目如何引入并啟用協程成了實際場景中的客觀問題由于協程性質及生命周期等原因這并非想象的那么容易本文整理了在現有項目中引入并開啟協
Swoole4之后,協程化支持已經完善,并且支持大量的PHP擴展自動協程化.一些基于Swoole4的框架也蓬勃發展,光看著文檔就讓人躍躍欲試.前置要求
但是對于現有舊項目如何引入并啟用Swoole協程成了實際場景中的客觀問題,由于協程性質及生命周期等原因,這并非想象的那么容易.
本文整理了在現有項目中引入Swoole4并開啟協程的一些步驟及需要注意的問題,期望可以為有需要的人提供幫助.
請閱讀Swoole文檔中環境依賴的章節,本文只針對代碼部分的調整.下文默認已成功編譯安裝了Swoole4擴展.框架代碼部分
首先請查閱所用框架是否有結合Swoole的開源方案,如laravel-s等.如有可按需選用,如沒有也參照業務代碼部分對框架代碼進行改造.(這會導致升級框架版本變困難)業務代碼部分
首先閱讀Swoole文檔中協程編程須知的章節.
對單例對象按協程ID做隔離,防止單例對象跨協程使用.對Mysql,Redis等連接資源需要defer進行回收復用或關閉,防止連接數持續增加.
對全局變量及常量做評估,所有可能引起問題的地方全部按協程ID做隔離.
對項目內直接echo,print之類輸出的位置做修改,或使用ob_start方法進行獲取輸出內容進行處理.
對項目內使用不支持自動協程化的庫做修改,采用協程客戶端進行替換.(如:curl).
對項目內使用exit,die的地方做修改.
對static靜態類,屬性或變量及引用傳遞進協程的變量都要小心操作,盡量避免這種情況,只使用局部變量.
對每次修改做好單元測試,做好備份及回滾措施.
可從某些單一場景下入手逐步進行修改.(如:某個單一業務模塊,某個簡單PHP腳本等).
總結上述修改看似內容不多,但是在一個現有的項目中進行修改并保證服務正常運行卻并非易事,希望大家小心操作,早日成功.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31763.html
摘要:有研究過框架的同學就會發現,其實最核心的,就是用了拓展加上拓展來實現其底層的網絡服務和多進程調度。我們在模式下,測試起五個進程主進程要等待回收我們,這樣就很簡單的實現了一個多進程的協程服務。 有研究過Workman框架的同學就會發現,其實workman最核心的,就是用了php socket拓展加上pcntl拓展來實現其底層的網絡服務和多進程調度。那我們今天就來探討如何使用Swoole的...
摘要:官方文檔中對協程的示例大多按照一次請求一個協程或腳本并發大量協程的方式來舉例說明這種使用方式下提升的是整體的性能而非單次請求的響應時間要提升單次請求的響應效率或提升非網絡服務下腳本代碼的運行效率需要在業務代碼中主動使用協程來處理那些可并發的 Swoole官方文檔中對協程的示例大多按照一次請求一個協程(或腳本并發大量協程)的方式來舉例說明,這種使用方式下提升的是整體的性能,而非單次請求的...
摘要:訪問安全問題為什么說有訪問安全問題呢傳統地,在的的環境中,很少有遇到所謂變量安全訪問問題。上下文管理器為了解決這個問題,我們引入協程上下文管理這樣的概念,由此來實現每個協程環境內的數據隔離。 訪問安全問題 為什么說有訪問安全問題呢?傳統地,在php的的環境中,很少有Phper遇到所謂變量安全訪問問題。舉個例子,代碼大約如下: class db { protected stati...
摘要:為語言提供了強大的協程編程模式。提供的協程語法借鑒自,在此向開發組致敬協程可以與很好地互補。并發執行使用創建協程,可以讓和兩個函數變成并發執行。協程需要拿到請求的結果。 Swoole4為PHP語言提供了強大的CSP協程編程模式。底層提供了3個關鍵詞,可以方便地實現各類功能。 Swoole4提供的PHP協程語法借鑒自Golang,在此向GO開發組致敬 PHP+Swoole協程可以與...
摘要:開發負責人創建分支,編寫單元測試腳本,編寫代碼,實現提案中的所有內容,最終發起交叉評審,檢查代碼,提出改進意見,反饋給開發負責人,繼續完善細節。 Swoole開源項目從2012年開始發布第一個版本,到現在已經有近7年的歷史。在這七年的時間里: 提交了8821次代碼變更 發布了287個版本 收到并解決1161次issue反饋 合并了603次pull request 共有100位開發者...
閱讀 2969·2021-11-25 09:43
閱讀 3586·2021-11-24 11:13
閱讀 3354·2021-10-14 09:42
閱讀 2556·2021-09-23 11:53
閱讀 3605·2021-09-22 15:57
閱讀 3221·2021-09-02 09:54
閱讀 3499·2019-08-30 13:47
閱讀 1638·2019-08-29 16:55