Asf PHP開發之設定資訊常駐系統記憶體

2020-07-16 10:05:52
傳統MVC 與 Asf 比較

傳統的MVC框架

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

Asf框架

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

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

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

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

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

流程圖

7aaa5947ddebf4cea4705dbf81808c2.png

開啟快取方法

<?php
ini_set('asf.cache_config_enable', 1); /* 開啟組態檔快取 */
ini_set('asf.cache_config_expire', 300); /* 設定快取多少秒之後過期, 300 seconds by default */

框架入口方式載入php/ini組態檔

<?php
define('APP_PATH', dirname(__DIR__));
/* 快取 config.ini 檔案 */
$app = new AsfApplication(APP_PATH . '/config/config.ini');
$app->run();

AsfConfigPhp 載入php組態檔

<?php
$conf_php =  new AsfConfigPhp(CONFIG_PATH . '/config.db.php');

AsfConfigIni 載入ini組態檔

<?php
$conf_ini =  new AsfConfigIni(CONFIG_PATH . '/config.redis.ini');

讀取設定內容方法

<?php
print_r(AsfApplication::getInstance()->getConfig()->toArray());
print_r(AsfConfig::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開發之設定資訊常駐系統記憶體的詳細內容,更多請關注TW511.COM其它相關文章!