diff --git a/library/think/cache/Driver.php b/library/think/cache/Driver.php index 731a6933..f1c41fa4 100644 --- a/library/think/cache/Driver.php +++ b/library/think/cache/Driver.php @@ -120,22 +120,22 @@ abstract class Driver public function remember($name, $value, $expire = null) { if (!$this->has($name)) { - while ($this->has($name . '.lock')) { + while ($this->has($name . '_lock')) { // 存在锁定则等待 } try { // 锁定 - $this->set($name . '.lock', true); + $this->set($name . '_lock', true); if ($value instanceof \Closure) { $value = call_user_func($value); } $this->set($name, $value, $expire); // 解锁 - $this->rm($name . '.lock'); + $this->rm($name . '_lock'); } catch (\Exception $e) { // 解锁 - $this->rm($name . '.lock'); + $this->rm($name . '_lock'); } } else { $value = $this->get($name); diff --git a/library/think/cache/driver/File.php b/library/think/cache/driver/File.php index 2fa4fe70..3d9fb3a7 100644 --- a/library/think/cache/driver/File.php +++ b/library/think/cache/driver/File.php @@ -109,12 +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 && !is_file($filename . '.lock')) { - // 生成过期锁定文件 - touch($filename . '.lock'); + if (0 != $expire && $_SERVER['REQUEST_TIME'] > filemtime($filename) + $expire) { return $default; } - $content = substr($content, 20, -3); + $content = substr($content, 32); if ($this->options['data_compress'] && function_exists('gzcompress')) { //启用数据压缩 $content = gzuncompress($content); @@ -148,14 +146,10 @@ class File extends Driver //数据压缩 $data = gzcompress($data, 3); } - $data = ""; + $data = "\n" . $data; $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 {