国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > ThinkPHP > 正文

ThinkPHP實現動態配置config文件及動態清空緩存

2024-09-09 15:19:44
字體:
來源:轉載
供稿:網友

最近在用@ThinkPHP 做系統的時候,要用到一個功能,就要動態的將系統的配置參數保存到Config文件中,以往,我們做系統的時候,項目的配置參數都會直接事先寫入到Config/Config.php文件中,然后在項目中應用即可,但是,有些項目,用戶需要根據自己的情況將配置參數,通過后臺動態的來設置,這種動態的參數配置,一般我們有兩種方式,一種是寫入到數據庫,另一種就是寫入到配置文件,今天,我來說說用配置文件的形式來實現這一功能.

一、配置文件設置

首先,我們在TP項目配置目錄Config下新建一個配置文件,命名為setting.config.php,這個文件用以保存動態的參數,然后,項目主配置文件Config.php中用合并數組的方式,將setting.config.php合并進來,這樣,在整個項目中,即可調用setting.config.php中的配置參數了.

二、實現動態管理參數

在后臺,建立一個功能,將setting.config.php的默認值讀出,并顯示在一個表單中,這里可以使用TP的C函數實現,然后,即可在表單中對各個參數的值進行設置,表單提交保存后,將表單提交的值,進行處理,具體代碼如下.

setting.config.php文件的結構

  1. <?php 
  2. return array
  3. 'setting'=>array
  4. 'tel'  => '400-088-7380'
  5.                 'web'  => 'www.sinra.cn'
  6.                 'qq'   => '505531091'
  7.                 ...... 
  8.         ), 
  9. ); 
  10. ?> 
  11. //保存配置參數的操作 
  12. function SaveSetting(){ 
  13. //setting.config.php文件的路徑,通過settingfile_path來設定; 
  14. $setfile='./Home'.C('settingfile_path');  
  15. $a=C('setting');  //將默認配置參數的內容賦值給$a; 
  16. $b=array
  17.    'tel' => $_POST['tel'], 
  18.    'web' => $_POST['web'], 
  19.    ........ 
  20. ); 
  21. //這里將新的參數值,通過后臺的表單提交過來; 
  22. $c=array_merge($a,$b) ; //將數組$a和$b合并;我們知道,array_merge()函數,可以合并兩個數組,并且如果數組元素具有相同的鍵名,后面的值會覆蓋前面的值(數字鍵名除外); 

然后,將合并后的數組$c的值進行遍歷后,生成php文件代碼:

  1. $settingstr="<?php /n return array(/n'Setting' =>array(/n"
  2. foreach($c as $key=>$v){ 
  3. $settingstr.= "/t'".$key."'=>'".$v."',/n"
  4. $settingstr.="),/n);/n?>/n"
  5. file_put_contents($setfile,$settingstr); //通過file_put_contents保存setting.config.php文件; 

到此,setting.config.php文件的配置參數的值,已經被更新;

(Thinkphp3.1版本,已經支持C函數保存設置的參數值,所以,本方法,適合于3.0及以下版本的TP)

另外,我們知道TP在第一次運行時會把項目所有的配置文件,配置參數等,生成一個runtime緩存文件,如果我們更新了congfig 的內容,那么必須刪除項目中的緩存文件后才能生效,為此,我們讓系統自己來清空緩存,更新參數,代碼如下:

  1. //RUNTIME_FILE常量是入口文件中配置的runtimefile的路徑及文件名; 
  2. if(file_exists(RUNTIME_FILE)){ 
  3. unlink(RUNTIME_FILE); //刪除RUNTIME_FILE; 
  4. 光刪除runtime_file還不夠,要清空一下Cache文件夾中的文件;代碼如下: 
  5. $cachedir=RUNTIME_PATH."/Cache/";   //Cache文件的路徑; 
  6. if ($dh = opendir($cachedir)) {     //打開Cache文件夾; 
  7. while (($file = readdir($dh)) !== false) {    //遍歷Cache目錄, 
  8.      unlink($cachedir.$file);                //刪除遍歷到的每一個文件; 
  9. closedir($dh); 

到此,整個動態配置參數文件,并清空緩存的功能全部實現,以上代碼在TP3.0框架中,測試通過.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 阿克陶县| 阿拉善左旗| 武宁县| 克什克腾旗| 盈江县| 长宁县| 东光县| 繁峙县| 全椒县| 绿春县| 济阳县| 崇左市| 石城县| 阿克陶县| 铁岭县| 惠东县| 榆林市| 津南区| 盐山县| 信宜市| 莆田市| 武城县| 靖远县| 宽城| 隆德县| 滕州市| 山东省| 长宁区| 陇西县| 齐齐哈尔市| 门源| 县级市| 德清县| 丹寨县| 临安市| 临海市| 江西省| 三都| 壶关县| 龙里县| 静安区|