聊聊Yii2和ThinkPHP5的文件缓存

03 Aug 2018 Category: PHP

翻一翻Yii2和ThinkPHP5的源码,看看它们的文件缓存。看看这些使用广泛的框架如何设计一个缓存操作类。

Yii2和ThinkPHP5缓存操作提供的公共方法对比

Yii2缓存提供的方法

ThinkPHP5缓存提供的方法

Yii2 和ThinkPHP5 缓存操作对比

文件缓存中一些其他东西

LOCK_SH 共享锁(读文件),LOCK_EX 排它锁(写文件),LOCK_UN 释放锁,LOCK_NB 锁定不阻塞

写文件先执行写锁,其他进程不能读文件,必须等写锁释放。如果读文件加了LOCK_NB标志,则读文件不阻塞,直接读取失败!

读文件先执行读锁,其他进程可读。写入文件必须等读锁释放。如果写文件加了LOCK_NB标志,则写文件不阻塞,直接失败

PHP会缓存对文件状态信息的检查结果。如果在一个脚本中多次检查同一个文件,只在最初会读取信息,其他都是从缓存中获取。受影响的函数有:stat() lstat() file_exists() is_writable() is_readable() is_executable() is_file() is_dir() is_link() filectime() fileatime() filemtime() fileinode() filegroup() fileowner() filesize() filetype() fileperms()因此如果文件被操作过或者不需要缓存文件状态,则需要清除文件状态缓存,使用clearstatcache清除文件状态缓存