這篇文章主要介紹了關於Asf PHP 開發之配置資訊常駐系統記憶體,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
傳統MVC 與 Asf 比較
傳統的MVC架構
每次請求都會去重新載入設定檔。即使設定檔內容沒有更新, 也會去重新載入一次。這是一個很不好的設計。(開啟Opcache情況下, 還是有執行的過程時間)
Asf架構
讀取到設定檔的內容儲存到系統記憶體, 下一次請求直接去記憶體讀取資料。Asf 也提供非常簡單的配置實現 Config Cache。
什麼情境下開啟Config Cache合適?
建議在Web應用情境下都開啟吧, 後面版本可能會預設啟用
在CLI、多線程模式下開啟同樣生效, 只是PHP指令碼每次執行完就釋放了
支援資料類型有: strings, arrays, integers, boolean, doubles, floats, null
流程圖
開啟緩衝方法
<?phpini_set('asf.cache_config_enable', 1); /* 開啟設定檔緩衝 */ini_set('asf.cache_config_expire', 300); /* 設定緩衝多少秒之後到期, 300 seconds by default */
架構入口方式載入php/ini設定檔
<?phpdefine('APP_PATH', dirname(__DIR__));/* 緩衝 config.ini 檔案 */$app = new Asf\Application(APP_PATH . '/config/config.ini');$app->run();
Asf\Config\Php 載入php設定檔
<?php$conf_php = new Asf\Config\Php(CONFIG_PATH . '/config.db.php');
Asf\Config\Ini 載入ini設定檔
<?php$conf_ini = new Asf\Config\Ini(CONFIG_PATH . '/config.redis.ini');
讀取配置內容方法
<?phpprint_r(Asf\Application::getInstance()->getConfig()->toArray());print_r(Asf\Config::get()->toArray());
效能測試
在開啟 Opcache 情況下, 簡單做了一個 Config Cache 效能測試, ab -c100 -n10000
設定檔中配置項複雜程度與效能指標是有直線聯絡的喲
開啟緩衝 asf.cache_config_enable = 1
Total transferred: 16109994 bytesHTML transferred: 14259994 bytesRequests per second: 6859.01 [#/sec] (mean)Time per request: 14.579 [ms] (mean)Time per request: 0.146 [ms] (mean, across all concurrent requests)
無緩衝
Total transferred: 16080000 bytesHTML transferred: 14230000 bytesRequests per second: 6398.22 [#/sec] (mean)Time per request: 15.629 [ms] (mean)Time per request: 0.156 [ms] (mean, across all concurrent requests)
提示
Cache Config 不是基於共用記憶體的, 是基於 PHP 進程的喲, 不會有共用記憶體鎖的問題。
以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!