[thinkphp 5.0源码阅读] 缓存
Posted 那天ws
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[thinkphp 5.0源码阅读] 缓存相关的知识,希望对你有一定的参考价值。
保存缓存:
user表数据:
cache()方法保存缓存:
访问 http://mythinkphp.com/index/index/cache ,两个缓存被保存(runtime/cache目录下):
来看其中一个缓存文件:\\runtime\\cache\\7e\\58d63b60197ceb55a1c487989a3720.php
<?php //000000003600a:2:{i:0;a:4:{s:2:"id";i:1;s:4:"name";s:2:"ss";s:3:"age";i:24;s:3:"sex";i:1;}i:1;a:4:{s:2:"id";i:2;s:4:"name";s:2:"jj";s:3:"age";i:23;s:3:"sex";i:2;}} ?>
很明显数据被序列化了。取a:2:{i:0;a:4:{s:2:"id";i:1;s:4:"name";s:2:"ss";s:3:"age";i:24;s:3:"sex";i:1;}i:1;a:4:{s:2:"id";i:2;s:4:"name";s:2:"jj";s:3:"age";i:23;s:3:"sex";i:2;}}
解序列化:
可见数据确实被序列化之后保存到了文件。
进入到代码:
通过 “Cache::set(\'user1\',$user,3600);” 和 "use think\\Cache;" 找到 Cache 类的 set() 方法:
再跟进 self::init()
根据打印出来的数据可以看出,init()初始化了一些缓存的配置,比如:缓存类型(type), 缓存路径(path)等。
再进入 Config::get()看看:
返回了缓存文件配置信息。手册中还这样介绍:
所以用户的缓存信息配置将会进入到connect()函数:
connect()返回了一个对象(File类实例化),至此完成了一系列的初始化工作,进入到了\\thinkphp\\library\\think\\cache\\driver\\File.php
set() 方法完成了将缓存写入文件的工作。
再来看看缓存文件名 ”$filename = $this->getCacheKey($name);“ 的由来。
至此缓存数据写入到了文件中。
读取缓存:
缓存文件中的数据构成:
缓存标签:
以上是关于[thinkphp 5.0源码阅读] 缓存的主要内容,如果未能解决你的问题,请参考以下文章
2022/01/30thinkphp源码无差别阅读(三十二)
关于thinkPHP 5.0-5.1部分版本index.php被修改为首页HTML代码问题