From 8d6068ab2bdd48516e2c93abba4f6158a73874b9 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Sat, 9 Jan 2016 21:04:51 +0900 Subject: [PATCH] Immediately invalidate PHP scripts from opcache if modified or deleted --- classes/cache/CacheFile.class.php | 8 -------- classes/file/FileHandler.class.php | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/classes/cache/CacheFile.class.php b/classes/cache/CacheFile.class.php index ff1afb4d5..1e1ac7ff6 100644 --- a/classes/cache/CacheFile.class.php +++ b/classes/cache/CacheFile.class.php @@ -78,10 +78,6 @@ class CacheFile extends CacheBase $content[] = 'if(!defined(\'__XE__\')) { exit(); }'; $content[] = 'return \'' . addslashes(serialize($obj)) . '\';'; FileHandler::writeFile($cache_file, implode(PHP_EOL, $content)); - if(function_exists('opcache_invalidate')) - { - @opcache_invalidate($cache_file, true); - } } /** @@ -145,10 +141,6 @@ class CacheFile extends CacheBase function _delete($_key) { $cache_file = $this->getCacheFileName($_key); - if(function_exists('opcache_invalidate')) - { - @opcache_invalidate($cache_file, true); - } FileHandler::removeFile($cache_file); } diff --git a/classes/file/FileHandler.class.php b/classes/file/FileHandler.class.php index 6db60dcbe..d725d95aa 100644 --- a/classes/file/FileHandler.class.php +++ b/classes/file/FileHandler.class.php @@ -156,6 +156,10 @@ class FileHandler @file_put_contents($filename, $buff, $flags|LOCK_EX); @chmod($filename, 0644); + if(function_exists('opcache_invalidate') && substr($filename, -4) === '.php') + { + @opcache_invalidate($filename, true); + } } /** @@ -166,7 +170,16 @@ class FileHandler */ public static function removeFile($filename) { - return (($filename = self::exists($filename)) !== FALSE) && @unlink($filename); + if(($filename = self::exists($filename)) === false) + { + return false; + } + $status = @unlink($filename); + if(function_exists('opcache_invalidate') && substr($filename, -4) === '.php') + { + @opcache_invalidate($filename, true); + } + return $status; } /**