首頁  >  文章  >  後端開發  >  Asf PHP開發之配置資訊常駐系統內存

Asf PHP開發之配置資訊常駐系統內存

藏色散人
藏色散人轉載
2019-11-22 10:11:162230瀏覽

傳統MVC 與 Asf 比較

傳統的MVC框架

每次要求都會去重新載入設定檔。即使設定檔內容沒有更新, 也會去重新載入一次。這是一個很不好的設計。 (開啟Opcache情況下, 還是有執行的過程時間)

Asf框架

讀取到設定檔的內容儲存到系統記憶體, 下一次請求直接去記憶體讀取資料。 Asf 也提供非常簡單的設定實作 Config Cache。

什麼場景下開啟Config Cache適當?

● 建議在Web應用程式場景下都開啟吧, 後面版本可能會預設啟用

##●●在CLI、多執行緒模式下開啟同樣生效, 只是PHP腳本每次執行完就釋放了

● 支援資料型別有: strings, arrays, integers, boolean, doubles, floats, null

#流程圖

Asf PHP開發之配置資訊常駐系統內存

開啟快取方法

<?php
ini_set(&#39;asf.cache_config_enable&#39;, 1); /* 开启配置文件缓存 */
ini_set(&#39;asf.cache_config_expire&#39;, 300); /* 设置缓存多少秒之后过期, 300 seconds by default */

框架入口方式載入php/ ini設定檔

<?php
define(&#39;APP_PATH&#39;, dirname(__DIR__));
/* 缓存 config.ini 文件 */
$app = new Asf\Application(APP_PATH . &#39;/config/config.ini&#39;);
$app->run();

Asf\Config\Php 載入php設定檔

<?php
$conf_php =  new Asf\Config\Php(CONFIG_PATH . &#39;/config.db.php&#39;);

Asf\Config\Ini 載入ini設定檔

<?php
$conf_ini =  new Asf\Config\Ini(CONFIG_PATH . &#39;/config.redis.ini&#39;);

讀取設定內容方法

<?php
print_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 bytes
HTML transferred:       14259994 bytes
Requests 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 bytes
HTML transferred:       14230000 bytes
Requests 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 進程的喲, 不會有共享記憶體鎖的問題。

推薦:《

PHP教學

以上是Asf PHP開發之配置資訊常駐系統內存的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除