X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FDiskCachePlugin.php;h=b709ea3b31417ce5367d35724162aae0bf18c983;hb=ec155464765db36591bbb183b335abbc1ec8638c;hp=2b788decb94b06c60a780b355574b328ed0f8c36;hpb=f13cad656e1f53d8f801a4787bd8b28df427c6c2;p=quix0rs-gnu-social.git diff --git a/plugins/DiskCachePlugin.php b/plugins/DiskCachePlugin.php index 2b788decb9..b709ea3b31 100644 --- a/plugins/DiskCachePlugin.php +++ b/plugins/DiskCachePlugin.php @@ -68,9 +68,12 @@ class DiskCachePlugin extends Plugin function onStartCacheGet(&$key, &$value) { $filename = $this->keyToFilename($key); + if (file_exists($filename)) { $data = file_get_contents($filename); - $value = unserialize($data); + if ($data !== false) { + $value = unserialize($data); + } } Event::handle('EndCacheGet', array($key, &$value)); @@ -116,7 +119,24 @@ class DiskCachePlugin extends Plugin return false; } - file_put_contents($filename, serialize($value)); + // Write to a temp file and move to destination + + $tempname = tempnam(null, 'statusnetdiskcache'); + + $result = file_put_contents($tempname, serialize($value)); + + if ($result === false) { + $this->log(LOG_ERR, "Couldn't write '$key' to temp file '$tempname'"); + return false; + } + + $result = rename($tempname, $filename); + + if (!$result) { + $this->log(LOG_ERR, "Couldn't move temp file '$tempname' to path '$filename' for key '$key'"); + @unlink($tempname); + return false; + } Event::handle('EndCacheSet', array($key, $value, $flag, $expiry));