|
|
@@ -130,7 +130,6 @@ class File {
|
|
|
if (!$force && is_resource($this->handle)) {
|
|
|
return true;
|
|
|
}
|
|
|
- clearstatcache();
|
|
|
if ($this->exists() === false) {
|
|
|
if ($this->create() === false) {
|
|
|
return false;
|
|
|
@@ -278,7 +277,6 @@ class File {
|
|
|
* @link http://book.cakephp.org/2.0/en/core-utility-libraries/file-folder.html#File::delete
|
|
|
*/
|
|
|
public function delete() {
|
|
|
- clearstatcache();
|
|
|
if (is_resource($this->handle)) {
|
|
|
fclose($this->handle);
|
|
|
$this->handle = null;
|
|
|
@@ -410,6 +408,7 @@ class File {
|
|
|
* @link http://book.cakephp.org/2.0/en/core-utility-libraries/file-folder.html#File::exists
|
|
|
*/
|
|
|
public function exists() {
|
|
|
+ $this->clearStatCache();
|
|
|
return (file_exists($this->path) && is_file($this->path));
|
|
|
}
|
|
|
|
|
|
@@ -566,4 +565,21 @@ class File {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * Clear PHP's internal stat cache
|
|
|
+ *
|
|
|
+ * For 5.3 onwards its possible to clear cache for just a single file. Passing true
|
|
|
+ * will clear all the stat cache.
|
|
|
+ *
|
|
|
+ * @param boolean $all Clear all cache or not
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function clearStatCache($all = false) {
|
|
|
+ if ($all === false && version_compare(PHP_VERSION, '5.3.0') >= 0) {
|
|
|
+ return clearstatcache(true, $this->path);
|
|
|
+ }
|
|
|
+
|
|
|
+ return clearstatcache();
|
|
|
+ }
|
|
|
+
|
|
|
}
|