亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > CMS > PhpCMS > 正文

【phpcms-v9】phpcms-v9的緩存結構

2024-09-10 07:15:51
字體:
來源:轉載
供稿:網友

這篇文章繼續介紹phpcms的緩存結構,我并沒有做深入的學習,但是phpcms的想法上卻是有他的過人之處,太令人折服了,這里分享phpcms緩存的一中實現方案.

/include/cache.func.php

這里最先主要是定義了一些phpcms的緩存函數,phpcms的緩存分為,表緩存,模型緩存,模型字段緩存,還有模塊緩存,首先這些都是基于表的緩存的.

最開始有一個函數:

  1. function cache_all() 
  2. @set_time_limit(600); 
  3. cache_common(); 
  4. cache_module(); 
  5. cache_model(); 
  6. cache_category(); 
  7. cache_area(); 
  8. cache_type(); 
  9. cache_member_group(); 
  10.     cache_role(); 
  11. cache_author(); 
  12. cache_keyword(); 
  13. cache_copyfrom(); 
  14. cache_pos(); 
  15.     cache_status(); 
  16. cache_workflow(); 
  17. tags_update(); 
  18. return TRUE; 

這個函數就調用一大堆的緩存函數來生成緩存的。

首先第一個函數 cache_common

大家可以看下面的注釋,是將 前綴名_model,前綴名_category ,前綴名_ module,前綴名,前綴名_type,前綴名_area,等等寫入到$CACHE數組的對應下表之中 (比如model 表的數據$CACHE["model"]=$arr,$arr為phpcms_model表的數據)

  1. function cache_common() 
  2. global $db
  3. $data = array(); 
  4. $result = $db->query("SELECT `module`,`name`,`path`,`url`,`iscore`,`version` FROM `".DB_PRE."module` WHERE `disabled`=0"); 
  5. while($r = $db->fetch_array($result)) 
  6.    if(!$r['path']) $r['path'] = $r['module'] == 'phpcms' ? '' : $r['module'].'/'
  7.    if(!$r['url']) $r['url'] = $r['module'] == 'phpcms' ? '' : $r['module'].'/'
  8.    $data[$r['module']] = $r
  9.  
  10. $db->free_result($result); 
  11. $CACHE['MODULE'] = $data
  12. //以上是將對應的模塊寫入$CACHE; 
  13.  
  14. $data = array(); 
  15. $result = $db->query("SELECT * FROM `".DB_PRE."model` WHERE `disabled`=0"); 
  16. while($r = $db->fetch_array($result)) 
  17.    $data[$r['modelid']] = $r
  18. $db->free_result($result); 
  19. $CACHE['MODEL'] = $data
  20. $data = array(); 
  21.  
  22. //以上是對應的 model表里的內容寫入數組$CACHE; 
  23.  
  24.  
  25. $result = $db->query("SELECT `catid`,`module`,`type`,`modelid`,`catname`,`style`,`image`,`catdir`,`url`,`parentid`,`arrparentid`,`parentdir`,`child`,`arrchildid`,`items`,`citems`,`pitems`,`ismenu`,`letter` FROM `".DB_PRE."category` WHERE 1 ORDER BY `listorder`,`catid`"); 
  26. while($r = $db->fetch_array($result)) 
  27.    $r['url'] = url($r['url']); 
  28.    $data[$r['catid']] = $r
  29. $db->free_result($result); 
  30. $CACHE['CATEGORY'] = $data
  31. //以上是將所有的欄目寫入$CACHE數組 
  32.  
  33. $data = array(); 
  34. $result = $db->query("SELECT `typeid`,`modelid`,`module`,`name`,`style`,`typedir`,`url` FROM `".DB_PRE."type` WHERE 1 ORDER BY `listorder`,`typeid`"); 
  35. while($r = $db->fetch_array($result)) 
  36.    $data[$r['typeid']] = $r
  37. $db->free_result($result); 
  38. $CACHE['TYPE'] = $data
  39. //以上是將所有的 類別表里的數據寫入$CACHE 
  40.  
  41. $data = array(); 
  42. $result = $db->query("SELECT `areaid`,`name`,`style`,`parentid`,`arrparentid`,`child`,`arrchildid` FROM `".DB_PRE."area` WHERE 1 ORDER BY `listorder`,`areaid`"); 
  43. while($r = $db->fetch_array($result)) 
  44.    $data[$r['areaid']] = $r
  45. $db->free_result($result); 
  46. $CACHE['AREA'] = $data
  47.  
  48. //所有的地區表寫入$CACHE; 
  49.  
  50. $data = array(); 
  51. $result = $db->query("SELECT `urlruleid`,`urlrule` FROM `".DB_PRE."urlrule` WHERE 1 ORDER BY `urlruleid`"); 
  52. while($r = $db->fetch_array($result)) 
  53.    $data[$r['urlruleid']] = $r['urlrule']; 
  54. $db->free_result($result); 
  55. $CACHE['URLRULE'] = $data
  56.  
  57. //將所有的url規則寫入緩存 
  58.  
  59. $data = array(); 
  60.     $r = $db->get_one("SELECT `setting` FROM `".DB_PRE."module` WHERE `module`='phpcms'"); 
  61. $setting = $r['setting']; 
  62. eval("/$PHPCMS = $setting;"); 
  63. if($PHPCMS['siteurl'] ==''$PHPCMS['siteurl'] = SITE_URL; 
  64.  
  65. $CACHE['PHPCMS'] = $PHPCMS
  66. //開源軟件:Vevb.com 
  67. //最后調用cache_write方法將所有的數組寫入common.php 位置/date/cache/common.php根據系統變量慧有所改動 
  68.  
  69. cache_write('common.php'$CACHE); 
  70.      
  71. return $CACHE

phpcms表緩存的實現方式主要是:利用一個叫cache_table函數$table是要緩存的表名,$fileds 是查詢的字段名字,默認為 ' * ',$where sql語句中的where 子句,$order 排序,$isline是否開啟字段緩存默認為不開啟,如果開啟表字段緩存和表緩存將同時進行:

  1. function cache_table($table$fields = '*'$valfield = ''$where = ''$order = ''$iscacheline = 0, $number = 0) 
  2. global $db
  3. $keyfield = $db->get_primary($table); 
  4. $data = array(); 
  5. if($where$where = " WHERE $where"
  6. if(!$order$order = $keyfield
  7. $limit = $number ? "LIMIT 0,$number" : ''
  8. $result = $db->query("SELECT $fields FROM `$table` $where ORDER BY $order $limit"); 
  9. $table = preg_replace("/^".DB_PRE."(.*)$/"""$table); 
  10. while($r = $db->fetch_array($result)) 
  11.    if(isset($r['setting']) && !emptyempty($r['setting'])) 
  12.    { 
  13.     $setting = $r['setting']; 
  14.     eval("/$setting = $setting;");  
  15.     unset($r['setting']); 
  16.     if(is_array($setting)) $r = array_merge($r$setting); 
  17.         } 
  18.    $key = $r[$keyfield]; 
  19.    $value = $valfield ? $r[$valfield] : $r
  20.    $data[$key] = $value
  21.    if($iscacheline) cache_write($table.'_'.$key.'.php'$value); //表字段緩存 
  22. $db->free_result($result); 
  23. cache_write($table.'.php'$data) ;// 表緩存 
  24.  

將數據數組寫入對應的緩存文件,以上這個函數就是判斷下常量CACHE_PATH是否存在默認是data/cache的路徑然后用file_put_contents 將緩存的數據寫入到對應的cachefile中.

  1. function cache_write($file$array$path = ''
  2. if(!is_array($array)) return false; 
  3. $array = "<?php/nreturn ".var_export($array, true).";/n?>"
  4. $cachefile = ($path ? $path : CACHE_PATH).$file
  5. $strlen = file_put_contents($cachefile$array); 
  6. @chmod($cachefile, 0777); 
  7.  
  8. return $strlen

至于其他的可以參照以上的方法進行添加,大家可以查查看對應的cache.func.php:

  1. //緩存模型表 
  2. function cache_model() 
  3. cache_table(DB_PRE.'model''*''''''modelid', 1); 
  4. //緩存分類表生成文件路徑是../data/cachecategory_catid.php 
  5. function cache_category() 
  6. cache_table(DB_PRE.'category''*''''''listorder,catid', 1); 
  7. 緩存類別表生成路徑 
  8. ../data/cache/type_typeid.php 
  9. function cache_type() 
  10. cache_table(DB_PRE.'type''*''''''listorder,typeid', 1); 
  11. //緩存地區列表 
  12. 生成路徑:../data/cache/area_areaid.php 
  13. function cache_area() 
  14. cache_table(DB_PRE.'area''*''''''listorder,areaid', 1); 
  15. //緩存用戶組表 
  16. //生成路徑:../data/cache member_grounp_group_id.php 
  17. function cache_member_group() 
  18. cache_table(DB_PRE.'member_group''*''''''groupid', 1); 
  19. cache_table(DB_PRE.'member_group''*''name''''groupid', 0); 
  20. //緩存角色表 
  21. //生成路徑:../data/cache/role_roleid.php 
  22. function cache_role() 
  23. cache_table(DB_PRE.'role''*''name''''listorder,roleid'); 
  24. //緩存作者表 
  25. //生成路徑:../data/cache/author_authorid.php 
  26. function cache_author() 
  27. cache_table(DB_PRE.'author''*''name''''listorder,authorid', 0, 100); 
  28. function cache_keyword() 
  29. cache_table(DB_PRE.'keyword''*''tag''''listorder,usetimes', 0, 100); 
  30. function cache_copyfrom() 
  31. cache_table(DB_PRE.'copyfrom''*''''''listorder,usetimes', 0, 100); 
  32. function cache_pos() 
  33. cache_table(DB_PRE.'position''*''name''''listorder,posid', 0); 
  34. }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲新声在线观看| 亚洲最大福利视频网站| 亚洲成人亚洲激情| 黑人狂躁日本妞一区二区三区| 日韩大陆毛片av| www欧美xxxx| 欧美不卡视频一区发布| 青青久久av北条麻妃黑人| 综合激情国产一区| 亚洲欧洲美洲在线综合| 国产亚洲欧美日韩美女| 一区二区三区国产在线观看| 亚洲人成在线观看网站高清| 亚洲成人亚洲激情| 亚洲精品www久久久久久广东| 亚洲精品自产拍| 国产91精品最新在线播放| 欧美成人精品不卡视频在线观看| 日韩一区二区精品视频| 亚洲综合社区网| 亚洲国产成人久久| 国产一区二区免费| 成人综合国产精品| 97在线免费观看视频| 国产精品偷伦视频免费观看国产| 日韩电影免费在线观看中文字幕| 成人午夜激情网| 亚洲成人av在线播放| 亚洲国产99精品国自产| 久久久久这里只有精品| 欧美精品久久久久| 亚洲国产第一页| 国产成人精品免高潮在线观看| 日韩电影在线观看免费| 欧美电影免费观看网站| 68精品久久久久久欧美| 亚洲国产精品yw在线观看| 成人两性免费视频| 久久国产精品亚洲| 日韩av免费观影| 精品亚洲永久免费精品| 欧美日韩在线第一页| 午夜精品国产精品大乳美女| 国产91色在线免费| 久久精品国产亚洲| 国产日韩综合一区二区性色av| 成人免费观看网址| 午夜精品福利在线观看| 国产精品入口夜色视频大尺度| 亚洲欧美日韩高清| 久久91亚洲人成电影网站| 日韩中文字幕在线视频播放| 亚洲精品视频久久| 精品久久久中文| 日韩电影中文字幕一区| 欧美日韩精品在线观看| 国产亚洲精品成人av久久ww| 色综合91久久精品中文字幕| 国产精品亚洲一区二区三区| 欧美日本在线视频中文字字幕| 国产丝袜一区二区三区| 亚洲影院色在线观看免费| 午夜精品一区二区三区在线视| 国产日韩av高清| 91探花福利精品国产自产在线| 精品香蕉一区二区三区| 国产精品第3页| 国外成人在线视频| 欧美日韩激情美女| 91精品久久久久久久久中文字幕| 久久久精品中文字幕| 精品国产视频在线| 亚洲激情电影中文字幕| 亚洲第一精品自拍| 欧美日韩久久久久| 欧美日韩另类字幕中文| 91国产中文字幕| 97精品在线观看| 97久久精品国产| 亚洲精品久久久久国产| 成人免费淫片aa视频免费| 久久国产精品影片| 欧美成人一区在线| 欧美日韩国产一区中文午夜| 亚洲第一av网站| 久久中文字幕在线| 国产精品第一区| 国产精品一区二区三区在线播放| 欧美激情网友自拍| 国产精品自拍小视频| www.欧美三级电影.com| 亚洲第一福利视频| 久久久伊人日本| 欧美日韩ab片| 精品一区二区三区电影| 亚洲国产日韩一区| 日韩欧美国产高清91| 在线看国产精品| 91豆花精品一区| 91精品国产91久久久久久吃药| 日韩在线观看免费全| 亚洲国产精品悠悠久久琪琪| 国产成人综合久久| 久久久久久久成人| 国产精品激情av电影在线观看| 亚洲欧美日韩中文视频| 欧美国产日韩一区二区在线观看| 2019国产精品自在线拍国产不卡| 欧美中文字幕视频| 九九精品在线视频| 精品国内产的精品视频在线观看| 国产精品久久久久77777| 亚洲欧美综合v| 国产69久久精品成人| 欧美老女人性视频| 中文字幕av一区| 成人免费午夜电影| 尤物yw午夜国产精品视频| 亚洲qvod图片区电影| 欧美性猛交xxxx黑人猛交| 国产视频久久久久久久| 91丨九色丨国产在线| 亚洲jizzjizz日本少妇| 亚洲国产精品国自产拍av秋霞| 国产精品嫩草视频| 欧美xxxx14xxxxx性爽| 欧美性xxxxxx| 久久视频在线直播| 狠狠色香婷婷久久亚洲精品| 久久中文字幕一区| 久久久在线视频| 久久久国产一区二区| 欧美成人自拍视频| 久久久之久亚州精品露出| 国产精品视频网站| 欧美中文在线观看国产| 91香蕉电影院| 欧美极品在线视频| 亚洲免费电影在线观看| 日韩高清电影免费观看完整| 欧美乱大交xxxxx另类电影| 亚洲综合色av| 日韩av在线高清| 原创国产精品91| 国产精品久久久久久久久久久久久久| 国产日韩综合一区二区性色av| 91精品视频在线看| 久久最新资源网| 中文字幕在线看视频国产欧美在线看完整| 热re99久久精品国产66热| 中文字幕日韩在线播放| 国产视频一区在线| 国产视频欧美视频| 亚洲男人天堂手机在线| 国产精品久久久91| 国产精品久久久久久久久男| 欧美性xxxx极品hd欧美风情| 国产精品久久久久91| 最新中文字幕亚洲| 亚洲性夜色噜噜噜7777| 久久久精品中文字幕| 久久躁日日躁aaaaxxxx| 国产欧美一区二区三区久久| 福利一区福利二区微拍刺激|