中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

thinkphp5.1支不支持extra

發布時間:2022-12-12 10:15:58 來源:億速云 閱讀:166 作者:栢白 欄目:編程語言

本篇文章和大家了解一下thinkphp5.1支不支持extra。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

thinkphp5.1不支持extra,thinkphp5.1中config函數已經取消了extra的支持;可以將“function editConfig($arr = [] ,$user='admin'){...}”代碼貼入app或者application文件夾內的common.php中即可全局使用該函數。

thinkphp5.1是否支持extra?

不支持。

ThinkPHP5.1 使用文件作為配置文件

ThinkPHP5.1 使用文件作為配置文件的踩坑記錄

使用Tp5.1(版本限定)作為App后臺的時候,用戶頻繁的請求,每一步操作都要訪問數據庫,每一步操作都要訪問到 config 配置表,頻繁的讀取使數據庫壓力山大,在后臺監控流量,發現將近30%的請求都是在訪問config表,所以決定將配置固話到本地,使用文件作為配置.

但是查詢多方資料,未能找到可以靜態修改配置,Tp5.1提供的Config::set()函數只能動態的修改配置文件,而且僅限于本控制器內,實際配置文件并沒有改變,這顯然不符合我們的要求.

經查詢多方資料后,發現這篇最為靠譜,但是實測無效,

進入config函數后,發現Tp5.1中,config函數已經取消了extra的支持,于是乎自己動手改寫了一下

不多說,直接暴力上 代碼.

/**
 * 修改擴展配置文件
 * @param array  $arr  需要更新或添加的配置
 * @param string $user 修改人
 * @return bool
 */
function editConfig($arr = [] ,$user='admin')
{
    if (is_array($arr)) {
        //獲取文件名
        $filename = 'business.php';
        //獲取配置文件環境變量位置(請確保開啟權限,如若報錯,請改為絕對路徑)
        $filepath = Env::get('CONFIG_PATH'). $filename;
        //判定配置文件是否存在
        if (!file_exists($filepath)  ) {
            if(!fopen($filepath, "w")){
                return 'PermissionError1';
            }
        }
        //判定權限是否足夠
        if (!is_writable($filepath)) {
            return 'PermissionError2';
        }
        //遍歷整個配置文件
        $conf = include $filepath;
        foreach ($arr as $key => $value) {
            $conf[$key] = $value;
        }
        //記錄修改者
        $time = date('Y/m/d H:i:s');
        $str = "<?php\r\n/**\r\n * 由".$user."修改.\r\n * $time\r\n */\r\nreturn [\r\n";
        //寫入配置文件
        foreach ($conf as $key => $value) {
            if(is_array($value)){
                $str.="\t'$key'=>[\r\n";
                foreach ($value as $ikey=>$r) {
                    if(is_numeric($ikey)){
                        $str .= "\t\t'$r',";
                        $str .= "\r\n";
                    }else{
                        $str .= "\t\t'$ikey' => '$r',";
                        $str .= "\r\n";
                    }
                }
                $str = rtrim($str,',');
                $str .= "\t],"."\r\n";
            } else{
                $str .= "\t'$key' => '$value',";
                $str .= "\r\n";
            }
        }
        $str .= '];';
        //關閉文件
        $result = file_put_contents($filepath, $str);
        if($result){
            return 'success';
        } else {
            return $result;
        }
    } else {
        return 'error';
    }
}

將本段代碼貼入app(或者application)文件夾內的common.php中,即可全局使用該函數,進行修改配置文件.

范例:

在網站根目錄的config文件夾中建立一個business.php文件(注意讀寫權限),

控制器中調用修改函數

  public function setBusiness(){
        $arr = array(
            "WEB" => [
                "web_status"=>'1',
                1,3,4
            ],
        );
        $result=editConfig($arr,'admin123');
        if($result=='success'){
            echo ('修改成功');
        }elseif($result=='error'){
            echo ('修改失敗');
        }
        elseif($result=='PermissionError'){
            echo ('文件無權限,請聯系管理員');
        }
    }

config文件夾下的配置文件就會修改為

<?php
/**
 * 由admin123修改.
 * 2019/11/22 13:00:27
 */
return [
'WEB'=>[
'web_status' => '1',
'1',
'3',
'4',
],
];

接下來,在其他控制器中,就可以直接使用config的法則來獲取各種配置文件了,具體規則,請移步TP5.1手冊配置獲取章節.

邏輯程序直接從文件讀取配置,用戶讀取配置,可以設置緩存或者直接從redis里讀取.

以上就是thinkphp5.1支不支持extra的簡略介紹,當然詳細使用上面的不同還得要大家自己使用過才領會。如果想了解更多,歡迎關注億速云行業資訊頻道哦!

向AI問一下細節

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

AI

五家渠市| 望谟县| 邹平县| 瑞金市| 佛学| 昌乐县| 剑阁县| 安岳县| 察哈| 南投市| 五寨县| 黔西| 房山区| 南郑县| 斗六市| 株洲县| 新密市| 秦皇岛市| 亚东县| 常熟市| 崇文区| 湘潭市| 长武县| 乌审旗| 双江| 林西县| 仪陇县| 库尔勒市| 凌源市| 滨州市| 麻江县| 石首市| 保康县| 安岳县| 辰溪县| 喜德县| 丽江市| 镇安县| 信阳市| 常熟市| 沧源|