码迷,mamicode.com
首页 > Web开发 > 详细

[thinkphp 5.0源码阅读] 缓存(一)

时间:2017-09-20 23:18:54      阅读:332      评论:0      收藏:0      [点我收藏+]

标签:9.png   返回   分享   think   进入   his   run   blog   pat   

保存缓存:

技术分享

 

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源码阅读] 缓存(一)

标签:9.png   返回   分享   think   进入   his   run   blog   pat   

原文地址:http://www.cnblogs.com/natian-ws/p/7565400.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!