位置: IT常识 - 正文

phpcms v9缓存文件是怎样生成的(php文件缓存类)

编辑:rootadmin
phpcms v9缓存文件的生成方法:首先打开“cache.func.php”文件;然后通过“cache_all()”方法调用多个缓存函数来生成缓存即可,如“cache_common”函数、“cache_table”函数等等。

推荐整理分享phpcms v9缓存文件是怎样生成的(php文件缓存类),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php cache缓存,php cache缓存,phpcms更新缓存 文件,php ob缓存,phpcms更新缓存 文件,php的缓存文件是什么格式,php自带缓存,php自带缓存,内容如对您有帮助,希望把文章链接给更多的朋友!

phpcms v9缓存文件是怎样生成的?

这篇文章介绍phpcms的缓存结构

我并没有做深入的学习,但是phpcms的想法上却是有他的过人之处,太令人折服了,这里分享phpcms缓存的一中实现方案

/include/cache.func.php

这里最先主要是定义了一些phpcms的缓存函数,phpcms的缓存分为,表缓存,模型缓存,模型字段缓存,还有模块缓存,首先这些都是基于表的缓存的。

phpcms v9缓存文件是怎样生成的(php文件缓存类)

最开始有一个函数

function cache_all(){@set_time_limit(600);cache_common();cache_module();cache_model();cache_category();cache_area();cache_type();cache_member_group();cache_role();cache_author();cache_keyword();cache_copyfrom();cache_pos();cache_status();cache_workflow();tags_update();return TRUE;}

这个函数就调用一大堆的缓存函数来生成缓存的。

首先第一个函数 cache_common

大家可以看下面的注释,是将 前缀名_model,前缀名_category ,前缀名_ module,前缀名,前缀名_type,前缀名_area,等等写入到$CACHE数组的对应下表之中 (比如model 表的数据$CACHE["model"]=$arr,$arr为phpcms_model表的数据)

function cache_common(){global $db;$data = array();$result = $db->query("SELECT `module`,`name`,`path`,`url`,`iscore`,`version` FROM `".DB_PRE."module` WHERE `disabled`=0");while($r = $db->fetch_array($result)){if(!$r['path']) $r['path'] = $r['module'] == 'phpcms' ? '' : $r['module'].'/';if(!$r['url']) $r['url'] = $r['module'] == 'phpcms' ? '' : $r['module'].'/';$data[$r['module']] = $r;}$db->free_result($result);$CACHE['MODULE'] = $data;//以上是将对应的模块写入$CACHE;$data = array();$result = $db->query("SELECT * FROM `".DB_PRE."model` WHERE `disabled`=0");while($r = $db->fetch_array($result)){$data[$r['modelid']] = $r;}$db->free_result($result);$CACHE['MODEL'] = $data;$data = array();//以上是对应的 model表里的内容写入数组$CACHE;$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`");while($r = $db->fetch_array($result)){$r['url'] = url($r['url']);$data[$r['catid']] = $r;}$db->free_result($result);$CACHE['CATEGORY'] = $data;//以上是将所有的栏目写入$CACHE数组$data = array();$result = $db->query("SELECT `typeid`,`modelid`,`module`,`name`,`style`,`typedir`,`url` FROM `".DB_PRE."type` WHERE 1 ORDER BY `listorder`,`typeid`");while($r = $db->fetch_array($result)){$data[$r['typeid']] = $r;}$db->free_result($result);$CACHE['TYPE'] = $data;//以上是将所有的 类别表里的数据写入$CACHE$data = array();$result = $db->query("SELECT `areaid`,`name`,`style`,`parentid`,`arrparentid`,`child`,`arrchildid` FROM `".DB_PRE."area` WHERE 1 ORDER BY `listorder`,`areaid`");while($r = $db->fetch_array($result)){$data[$r['areaid']] = $r;}$db->free_result($result);$CACHE['AREA'] = $data;//所有的地区表写入$CACHE;$data = array();$result = $db->query("SELECT `urlruleid`,`urlrule` FROM `".DB_PRE."urlrule` WHERE 1 ORDER BY `urlruleid`");while($r = $db->fetch_array($result)){$data[$r['urlruleid']] = $r['urlrule'];}$db->free_result($result);$CACHE['URLRULE'] = $data;//将所有的url规则写入缓存$data = array();$r = $db->get_one("SELECT `setting` FROM `".DB_PRE."module` WHERE `module`='phpcms'");$setting = $r['setting'];eval("\$PHPCMS = $setting;");if($PHPCMS['siteurl'] =='') $PHPCMS['siteurl'] = SITE_URL;$CACHE['PHPCMS'] = $PHPCMS;//最后调用cache_write方法将所有的数组写入common.php 位置/date/cache/common.php根据系统变量慧有所改动cache_write('common.php', $CACHE);return $CACHE;}

phpcms表缓存的实现方式主要是:利用一个叫cache_table函数$table是要缓存的表名,$fileds 是查询的字段名字,默认为 ' * ',$where sql语句中的where 子句,$order 排序, $isline是否开启字段缓存默认为不开启,如果开启表字段缓存和表缓存将同时进行

function cache_table($table, $fields = '*', $valfield = '', $where = '', $order = '', $iscacheline = 0, $number = 0){global $db;$keyfield = $db->get_primary($table);$data = array();if($where) $where = " WHERE $where";if(!$order) $order = $keyfield;$limit = $number ? "LIMIT 0,$number" : '';$result = $db->query("SELECT $fields FROM `$table` $where ORDER BY $order $limit");$table = preg_replace("/^".DB_PRE."(.*)$/", "", $table);while($r = $db->fetch_array($result)){if(isset($r['setting']) && !empty($r['setting'])){$setting = $r['setting'];eval("\$setting = $setting;");unset($r['setting']);if(is_array($setting)) $r = array_merge($r, $setting);}$key = $r[$keyfield];$value = $valfield ? $r[$valfield] : $r;$data[$key] = $value;if($iscacheline) cache_write($table.'_'.$key.'.php', $value); //表字段缓存}$db->free_result($result);cache_write($table.'.php', $data) ;// 表缓存}

将数据数组写入对应的缓存文件,以上这个函数就是判断下常量CACHE_PATH是否存在默认是data/cache的路径然后用file_put_contents 将缓存的数据写入到对应的cachefile中

function cache_write($file, $array, $path = ''){if(!is_array($array)) return false;$array = "<?php\nreturn ".var_export($array, true).";\n?>";$cachefile = ($path ? $path : CACHE_PATH).$file;$strlen = file_put_contents($cachefile, $array);@chmod($cachefile, 0777);return $strlen;}

至于其他的可以参照以上的方法进行添加,大家可以查查看对应的cache.func.php

//缓存模型表function cache_model(){cache_table(DB_PRE.'model', '*', '', '', 'modelid', 1);}//缓存分类表生成文件路径是../data/cachecategory_catid.phpfunction cache_category(){cache_table(DB_PRE.'category', '*', '', '', 'listorder,catid', 1);}

缓存类别表生成路径

../data/cache/type_typeid.phpfunction cache_type(){cache_table(DB_PRE.'type', '*', '', '', 'listorder,typeid', 1);}//缓存地区列表

生成路径:../data/cache/area_areaid.php

function cache_area(){cache_table(DB_PRE.'area', '*', '', '', 'listorder,areaid', 1);}//缓存用户组表//生成路径:../data/cache member_grounp_group_id.phpfunction cache_member_group(){cache_table(DB_PRE.'member_group', '*', '', '', 'groupid', 1);cache_table(DB_PRE.'member_group', '*', 'name', '', 'groupid', 0);}//缓存角色表//生成路径:../data/cache/role_roleid.phpfunction cache_role(){cache_table(DB_PRE.'role', '*', 'name', '', 'listorder,roleid');}//缓存作者表//生成路径:../data/cache/author_authorid.phpfunction cache_author(){cache_table(DB_PRE.'author', '*', 'name', '', 'listorder,authorid', 0, 100);}function cache_keyword(){cache_table(DB_PRE.'keyword', '*', 'tag', '', 'listorder,usetimes', 0, 100);}function cache_copyfrom(){cache_table(DB_PRE.'copyfrom', '*', '', '', 'listorder,usetimes', 0, 100);}function cache_pos(){cache_table(DB_PRE.'position', '*', 'name', '', 'listorder,posid', 0);}

PHP中文网,大量的免费PHPCMS教程,欢迎在线学习!

本文链接地址:https://www.jiuchutong.com/zhishi/310149.html 转载请保留说明!

上一篇:利用Python的Matplotlib库进行数据可视化(python.mat)

下一篇:帝国cms怎么百度自动提交(帝国cms视频教程)

  • wps2019如何修改文字方向(wps2019如何修改默认双面打印)

    wps2019如何修改文字方向(wps2019如何修改默认双面打印)

  • 华为nova6插卡位置(华为nova 6插卡的地方)

    华为nova6插卡位置(华为nova 6插卡的地方)

  • 笔记本保修期是多久(笔记本保修期是能保修几次吗)

    笔记本保修期是多久(笔记本保修期是能保修几次吗)

  • 手机放包里走路会不会有步数(手机放挎包里会有步数吗)

    手机放包里走路会不会有步数(手机放挎包里会有步数吗)

  • 半导体降温原理(半导体降温帽图片)

    半导体降温原理(半导体降温帽图片)

  • 抖音推广位是什么意思(抖音广告位推广)

    抖音推广位是什么意思(抖音广告位推广)

  • 表格中日期后面的0怎么不显示(表格中日期后面加文字就年月日几个字就不见了)

    表格中日期后面的0怎么不显示(表格中日期后面加文字就年月日几个字就不见了)

  • realme系统和oppo是一样的吗(realme系统和红米系统哪个好)

    realme系统和oppo是一样的吗(realme系统和红米系统哪个好)

  • 优酷hd和优酷的区别(优酷hd与优酷)

    优酷hd和优酷的区别(优酷hd与优酷)

  • 8848手机有什么特殊功能(8848手机有什么特点)

    8848手机有什么特殊功能(8848手机有什么特点)

  • 多媒体个人计算机是指(多媒体个人计算机系统包括)

    多媒体个人计算机是指(多媒体个人计算机系统包括)

  • 照片存qq相册占内存吗(照片存qq相册占多少内存)

    照片存qq相册占内存吗(照片存qq相册占多少内存)

  • 数据线可以带上飞机吗(数据线)

    数据线可以带上飞机吗(数据线)

  • 天猫和淘宝的区别(天猫和淘宝差别)

    天猫和淘宝的区别(天猫和淘宝差别)

  • 荣耀20青春版采用什么处理器(荣耀 20青春版)

    荣耀20青春版采用什么处理器(荣耀 20青春版)

  • 电脑端描述怎么加图片(电脑端描述怎么添加图片)

    电脑端描述怎么加图片(电脑端描述怎么添加图片)

  • 数据对比分析表怎么做(数据对比分析表怎么做PPT)

    数据对比分析表怎么做(数据对比分析表怎么做PPT)

  • 手机方向锁定是什么意思(手机方向锁定是干什么用的)

    手机方向锁定是什么意思(手机方向锁定是干什么用的)

  • vivox27面部识别在哪里(vivo手机面部识别)

    vivox27面部识别在哪里(vivo手机面部识别)

  • 微信被别人登有提示吗(微信被别人登有风险吗)

    微信被别人登有提示吗(微信被别人登有风险吗)

  • 哈啰顺风车怎么计费(哈啰顺风车怎么取消订单)

    哈啰顺风车怎么计费(哈啰顺风车怎么取消订单)

  • 开启了共享文件夹在其他设备却看不到(开启共享文件夹)

    开启了共享文件夹在其他设备却看不到(开启共享文件夹)

  • Linux系统中配置和获取无线网卡信息的命令用法(linux系统中配置网卡ip地址的命令为)

    Linux系统中配置和获取无线网卡信息的命令用法(linux系统中配置网卡ip地址的命令为)

  • 前端向后端传值的几种方式总结(前端向后端传值的函数)

    前端向后端传值的几种方式总结(前端向后端传值的函数)

  • 资产损失税前扣除及纳税调整明细表
  • 所得税减免会计分录
  • 决算报表与账不一致怎么调账
  • 公司账户进账必须交税吗
  • 个人财产租赁所得税计算
  • 医院纯收入
  • 专票只有抵扣联发票联丢失怎么办
  • 收到社保补差款怎么办
  • 非正常损失进项转出额如何计算
  • 车辆购置税过户流程
  • 金融机构对服务的要求
  • 工业企业增值税缓交政策
  • 营改增后增加了什么征税项目
  • 汽车销售服务费话术
  • 个税申报系统在哪里撤销更正
  • 参展补助
  • 本年利润结转到利润分配是每月都结转还是年底结转
  • 增值税简易征收范围
  • 工商年报中企业税费缴纳怎么填写
  • 外贸企业代理出口销售的出口退税手续由谁办理
  • 结构性存款利息增值税
  • 暂估成本会计分录
  • php文件怎么打开运行
  • vue项目中技巧知识点
  • vue3 ts知乎专栏
  • php shell_exec()
  • 从零开始吧
  • 大模型时代的自然语言处理
  • java中通配符作用
  • 原材料被盗如何报案
  • 进口商品会计分录怎么写
  • python中的thread
  • 国家定额发票使用范围
  • 异地工程增值税按几个点预缴
  • 营业外支出增加记借方还是贷方
  • 销售费用主要包括哪些
  • 工资总额借方和贷方的区别
  • 个体工商户可以开增值税专用发票
  • sqlserver2008连接
  • php图片格式转换
  • 以前年度应收账款贷方余额如何调整
  • 人力资源外包服务包括哪些
  • 进项抵扣和销项抵扣
  • 退差价后退货
  • 子公司注销债务如何处理
  • 农民扶贫款到哪去领
  • 房地产开发成本费用明细表
  • 非限定性净资产是什么意思
  • 出纳可以做库管吗
  • 一般企业报税的税种
  • 预缴土地增值税的会计处理
  • 红十字会是事业编还是行政编
  • 收到委托加工物资发票
  • 兼职会计做什么工作
  • vista sp2 旗舰版 key
  • ubuntu 16.04
  • 电脑右下角windows设置在哪
  • win8系统怎么设置开机启动项
  • macbook如何安装windows
  • PHP startup: Unable to load dynamic library错误的错误
  • win7的网络设置
  • svchost占用
  • win8系统电脑
  • HttpURLConnection连接 详解
  • linux shell语句
  • 加快构建新发展格局,着力推动高质量发展心得体会
  • pythonista可以制作app吗
  • 详解中国女足出线形势
  • socketio nodejs
  • node.js中的http.response.setHeader方法使用说明
  • javascript绘制图形
  • python发邮件代码
  • javascript函数
  • 上海电子税务局怎么添加办税员
  • 打印格式不对怎么设置A4
  • 上海社保转出后查不到记录
  • 农村报账员的基本职责
  • 江西国税电子税务局
  • 1973年简并税制
  • 进口麦片销售公司
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设