[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);“ 的由来。
至此缓存数据写入到了文件中。
读取缓存:
缓存文件中的数据构成:
缓存标签:
转载于:https://www.cnblogs.com/natian-ws/p/7565400.html
[thinkphp 5.0源码阅读] 缓存(一)相关推荐
- Spring Boot 2.0系列文章(四):Spring Boot 2.0 源码阅读环境搭建
前提 前几天面试的时候,被问过 Spring Boot 的自动配置源码怎么实现的,没看过源码的我只能投降��了. 这不,赶紧来补补了,所以才有了这篇文章的出现,Spring Boot 2. 0 源码阅 ...
- FFmpeg5.0源码阅读之AVClass和AVOption
摘要:本文通过阅读FFmpeg源码来理解FFmpeg中AVOption的实现原理和具体的使用方式. 关键字:AVClss,AVOption,AVOptionRange 版本:FFmpeg5 ...
- FFmpeg5.0源码阅读——AVFrame
摘要:AVFrame是FFmpeg中表示裸数据的结构体,是FFmpeg最重要的结构体之一.本篇文章针对FFmpeg源码理解AVFrame的作用,相关的结构定义以及一些操作API的具体实现. 关 ...
- CloudSim 4.0源码阅读笔记(功耗实例)
文章目录 一.NonPowerAware案例 1.1 基本概述 1.2 云任务/虚机/主机/功耗模型参数设置 1.3 初始化云任务(CloudletList)-如何载入自定义真实数据集中的CPU利用率 ...
- 【Laravel3.0.0源码阅读分析】文件缓存类file.php
<?php namespace Laravel\Cache\Drivers;class File extends Driver {/*** The path to which the cache ...
- AFNetworking 3.0源码阅读 - AFURLResponseSerialization
这次来说一下AFURLResponseSerialization这个HTTP响应类. 定义了一个协议,该协议返回序列化后的结果.后续的AFHTTPResponseSerializer以及他的子类都遵循 ...
- 【Laravel3.0.0源码阅读分析】文件类file.php
<?php namespace Laravel; use Closure, FilesystemIterator as fIterator;class File {/*** Determine ...
- FFmpeg5.0源码阅读——avformat_open_input
摘要:本文主要描述了FFmpeg中用于打开文件接口avformat_open_input的具体调用流程,详细描述了该接口被调用时所作的具体工作. 关键字:ffmpeg.avformat_ope ...
- FFmpeg5.0源码阅读——av_interleaved_write_frame
摘要:本文主要详细描述FFmpeg中封装时写packet到媒体文件的函数av_interleaved_write_frame的实现. 关键字:av_interleaved_write_fram ...
最新文章
- 编写高质量代码 Web前端开发修炼之道 读书笔记
- win2003 服务器超出最大连接+强制重启服务器(方法)
- QQ窗口的控制,同步异步打开360网盘,控制360网盘窗口的移动
- .net core 24
- vscode python第三方库检测_VSCode中使用Pylint检查python代码
- java根据exif旋转,关于图片文件旋转JPEG与EXIF信息
- java五层架构_Web五层架构
- 计算机更换桌面图片,桌面图片高清怎么换?桌面图片怎么美化?
- 第三十九章 Caché 函数大全 $MATCH 函数
- python连接Oracle数据库报错Cannot locate a 64-bit Oracle Client library问题
- Unity塔防游戏学习(六)
- DxDiag中字段结构
- android studio按键精灵,按键精灵要点讲解一 - godlike的个人页面 - OSCHINA - 中文开源技术交流社区...
- nrf uart for android,nrf connect
- android图片压缩总结2
- ctf题库--这是什么鬼东西
- Java打板_AI 打板模型原理与实践
- win11更新后任务栏空白电脑卡死怎么办?
- 软件工程---5.系统建模
- 如何免费的、完整的把 PDF 转换为 Word? 分享三个转换方法
热门文章
- Linux服务器安全配置实例(二)用户账户权限配置
- 关于大小端、位域的一些概念
- Spring的beans标签下可以有其他标签
- HTTP协议是无状态协议,怎么理解
- eclipse调试的时候查看变量出现com.sun.jdi.InvocationException occurred invoking method.
- web管理 pdo-mysql_PHP重新安装启用PDO扩展和PDO_MySQL扩展
- 如何检索Python函数的源代码
- linux开源软件_为什么要使用Linux和开源软件?
- 当OpenOrg和OpenGov发生冲突时
- patricia tree_前5名:专访Patricia Torvalds和Ada Initiative,印度采用开源,等等