[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源碼閱讀] 緩存(一)