您好,登錄后才能下訂單哦!
小編給大家分享一下swoole怎么熱更新,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
隨著swoole的版本迭代更新,已經足夠穩定了,在阿里,騰訊,yy等各大公司都有著使用,也有很多游戲圈里的朋友也在使用,這些朋友經常會提到一個問題,每次代碼更新還需要停止服務,然后重新啟動,來達到更新代碼,然而這種做法,是比較粗暴的。
其實swoole里提供reload的特性,完全支持代碼的熱更新。
在介紹swoole的reload之前,先簡要的講講web方式是如何改了文件就立即生效的:
幾個概念:
1) sapi:可以簡單的理解為php引擎對外的一個統一接口,使得php可以和外部程序進行交互
2) php的生命周期中關鍵四個調用:MINT -> RINT -> RSHUTDOWN -> MSHUTDOWN
3) fpm : fastcgi進程管理器
那么fpm方式的流程就是: fpm通過sapi接口與php進程交互,在fpm啟動的時候,
第一步: 會調用各擴展的MINT方法,進行一些數據初始化(長駐內存),
第二步: 每個請求過來,先會執行RINT對單個請求行一個初始化,
第三步: 執行php腳本,
第四步: 執行RSHUTDOWN方法,
第五步: 如果你要停止fpm了,才會執行MSHUTDOWN。
fpm對每個請求的處理都是一直在在重復執行 2~4步 。
在第三步中, php的腳本是動態執行的,由于每次都要執行一次php腳本,而每次php腳本都要有一個把php文件翻譯成opcode的流程(比較耗時), 于是就產生的opcache工具。
opcache: 直接把php翻譯后的opcode代碼樹保存到共享內存中,以便直接使用,從而減少每次都把php翻譯成opcode的開銷。
opcache的問題:按照他的描述,修改了php文件,并不能立即被更新,
opcache的解決方案:有一個配置來設置隔多長時間檢測文件是否更新了,從而有機會在第二步重新來reload相關的文件.
當然,你也可以直接reload fpm,從而達到php熱更新的效果(opcache擴展可以在第四步把相關的opcode cache給清空)。
以上是“swoole怎么熱更新”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。