diff --git a/library/think/cache/driver/File.php b/library/think/cache/driver/File.php index 5aadb2b1..4d975ee0 100644 --- a/library/think/cache/driver/File.php +++ b/library/think/cache/driver/File.php @@ -109,8 +109,10 @@ class File extends Driver $content = file_get_contents($filename); if (false !== $content) { $expire = (int) substr($content, 8, 12); - if (0 != $expire && $_SERVER['REQUEST_TIME'] > filemtime($filename) + $expire) { - //缓存过期删除缓存文件 + if (0 != $expire && $_SERVER['REQUEST_TIME'] > filemtime($filename) + $expire && !is_file($filename . '.lock')) { + // 生成过期锁定文件 + touch($filename . '.lock'); + // 缓存过期删除缓存文件 $this->unlink($filename); return $default; } @@ -152,6 +154,10 @@ class File extends Driver $result = file_put_contents($filename, $data); if ($result) { isset($first) && $this->setTagItem($filename); + if (is_file($filename . '.lock')) { + // 解除过期锁定文件 + unlink($filename . '.lock'); + } clearstatcache(); return true; } else {