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