91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

一些使用Yaconf的經驗分享

發布時間:2020-06-14 09:55:53 來源:網絡 閱讀:8198 作者:netbird_fly 欄目:web開發

說到Yaconf, 從我14年進入WB就開始用了。確實幫助我們解決了很多問題,但同時我們理解不全,也碰到了一些情況,現在說說這些內容。

介紹

關于yaconf的介紹,我就不解釋了,請看 Laruence 的這篇文章。
http://www.laruence.com/2015/06/12/3051.html

運行原理

Yaconf是php的一個擴展,。沒有獨立的進程守護, 內存中的配置信息不能單獨存在,主要是為web應用服務的。
根據php-fpm的運行原理,Yaconf在PHP_MINIT_FUNCTION函數里面初始化配置,然后在PHP_RINIT_FUNCTION函數里面根據條件更新配置。這樣當一個web請求時,會觸發PHP_RINIT_FUNCTION這個函數,從而自動根據條件更新配置。

曾經走過的路

1. 文件夾時間沒有更新

Yaconf首先檢測的是配置文件夾的修改時間,曾經碰到過一種情況,當用fwrite更改寫入文件內容的時候,文件夾的mtime是不會變化的,此時如果把文件夾推到線上,會因為配置文件夾的st_mtime沒有變化而導致配置沒有生效。
臨時解決方案:推送之前,更改配置文件夾的mtime。
一些使用Yaconf的經驗分享

2. 文件內容為空

這個問題應該不是Yaconf本身的問題,某一次時候,admin管理后臺空間不足。某個配置文件生成的時候,沒有寫入。造成為空的情況,進而上傳到服務器上造成錯誤。
解決方案:生成ini配置文件的時候,進行腳本檢測。如果為空,則不生成ini文件。上傳的時候進行腳本檢測,當有大小為0的空文件,則不進行上傳(不是最好的解決方案, 逐步完善中)。

3. 文件內容有誤

一些使用Yaconf的經驗分享

如上內容, 如果值是英文字母或者數字沒有問題,如果是漢字,或者其中帶有括號等內容,生成的配置文件就不生效了。所以 我們每個值都用雙引號括了起來。轉移特殊的字符。
正確的寫法

a.b = "(測試ok)"

錯誤的寫法

a.b = (測試ok)

4. 生成的文件內容的key有失誤

這個問題是我在做某運動項目中碰到的,當時后臺可以自定義字段,即數據字典前移。產品可以直接在表單上追加字段。一個新的PM,于是把帶有括號的字符串,作為了key。這樣生成的ini中就含有帶特殊字符的key。配置文件同步到線上的時候,基本上只剩下找鍋的工作了。
如:

(abc) = "出bug了"

5. 降級文件采用Yaconf讀取ini文件

這個事實上還是沒有理解Yaconf的原理,使用操作不當造成的。降級的時候,上傳了降級的配置ini文件,實施了降級。但是結束后,直接刪掉了降級的a. ini文件。而線上環境又沒有經過大重啟(M_SHUTDOWN)。 當每次request來的時候,即使會檢測配置的目錄里面的文件,也會因為沒有降級文件a, 而不會更新內存中a對應的配置。
解決方案:上傳a.ini文件,但是里面可以寫一項其他內容。或者不采用Yaconf讀取文件。

后記

Yaconf相對其他擴展來說,源代碼還是比較容易讀懂的。閑的時候可以認真讀一讀,對你有幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长汀县| 灵寿县| 阿克陶县| 湘西| 光山县| 昭觉县| 金平| 左云县| 陇南市| 安宁市| 祥云县| 资源县| 渑池县| 宁陕县| 德格县| 遂溪县| 普陀区| 济源市| 彝良县| 嫩江县| 灵寿县| 河西区| 涞源县| 青阳县| 江都市| 哈巴河县| 鄂尔多斯市| 盐城市| 通许县| 宾川县| 克东县| 灌阳县| 桓台县| 绥芬河市| 金湖县| 福鼎市| 荥阳市| 邵阳市| 调兵山市| 伊金霍洛旗| 芒康县|