/** * Updates cache usage statistics. * Each of parameters is added to appropriate existing stats. * * @param int $hit * @param int $miss * @param int $quota * @param int $posts * @param float $files * @return void */ public function writeStatistic($hit = 0, $miss = 0, $quota = 0, $posts = 0, $files = 0.0) { $fileValues = $this->readStatistic(); if ($fileValues) { $newValues = array(intval($fileValues["HITS"]) + $hit, intval($fileValues["MISSES"]) + $miss, intval($fileValues["QUOTA"]) + $quota, intval($fileValues["POSTS"]) + $posts, $files === false ? 0 : doubleval($fileValues["FILE_SIZE"]) + doubleval($files)); $this->statFile->putContents(implode(",", $newValues)); } }
private function appendContentNonCloud($fileContent, $startRange, $endRange, $fileSize) { $file = new IO\File($this->getAbsolutePath()); if (!$file->isExists()) { $this->errorCollection->addOne(new Error('Could not find file', static::ERROR_EXISTS_FILE)); return false; } if ($file->putContents($fileContent, $file::APPEND) === false) { $this->errorCollection->addOne(new Error('Could not put contents to file', static::ERROR_PUT_CONTENTS)); return false; } return true; }
public function write($arAllVars, $baseDir, $initDir, $filename, $TTL) { $documentRoot = \Bitrix\Main\Application::getDocumentRoot(); $fn = IO\Path::combine($documentRoot, $baseDir, $initDir, $filename); $file = new IO\File($fn); $fnTmp = IO\Path::combine($documentRoot, $baseDir, $initDir, md5(mt_rand()) . ".tmp"); $fileTmp = new IO\File($fnTmp); $dir = $file->getDirectory(); if (!$dir->isExists()) { $dir->create(); } if (is_array($arAllVars)) { $contents = "<?"; $contents .= "\nif(\$INCLUDE_FROM_CACHE!='Y')return false;"; $contents .= "\n\$datecreate = '" . str_pad(mktime(), 12, "0", STR_PAD_LEFT) . "';"; $contents .= "\n\$dateexpire = '" . str_pad(mktime() + IntVal($TTL), 12, "0", STR_PAD_LEFT) . "';"; $v = serialize($arAllVars); if (static::checkZeroDanger()) { $v = str_replace("*", "", $v); $contents .= "\n\$zeroDanger = true;"; } $contents .= "\n\$ser_content = '" . str_replace("'", "\\'", str_replace("\\", "\\\\", $v)) . "';"; $contents .= "\nreturn true;"; $contents .= "\n?>"; } else { $contents = "BX" . str_pad(mktime(), 12, "0", STR_PAD_LEFT) . str_pad(mktime() + IntVal($this->TTL), 12, "0", STR_PAD_LEFT); $contents .= $arAllVars; } $this->written = $fileTmp->putContents($contents); $len = \Bitrix\Main\Text\String::strlenBytes($contents); //This checks for Zend Server CE in order to supress warnings if (function_exists('accelerator_reset')) { try { $file->delete(); } catch (\Exception $ex) { } } elseif ($file->isExists()) { $file->delete(); } if ($this->written === $len) { $fileTmp->rename($fn); } //This checks for Zend Server CE in order to supress warnings if (function_exists('accelerator_reset')) { try { IO\File::deleteFile($fnTmp); } catch (\Exception $ex) { } } elseif (IO\File::isFileExists($fnTmp)) { IO\File::deleteFile($fnTmp); } }
/** * @param array $value * @return $this */ private function _saveData(array $value = null) { $this->_file->putContents(\WS\Migrations\arrayToJson($value)); return $this; }
/** * Writes a debug information in a log file */ private function writeDebug() { if (!$this->debugEnabled || !defined("BX_COMPOSITE_DEBUG") || BX_COMPOSITE_DEBUG !== true || !$this->storage->exists()) { return; } if (!$this->storage->shouldCountQuota() || \CHTMLPagesCache::checkQuota()) { //temporary check if ($this->storage instanceof StaticHtmlFileStorage) { $cacheFile = $this->storage->getCacheFile(); $backupName = $cacheFile->getPath() . ".delete." . microtime(true); AddMessage2Log($backupName, "composite"); $backupFile = new Main\IO\File($backupName); $backupFile->putContents($cacheFile->getContents()); \CHTMLPagesCache::writeStatistic(0, 0, 0, 0, $cacheFile->getSize()); } else { AddMessage2Log($this->cacheKey . " was deleted", "composite"); } } else { AddMessage2Log($this->cacheKey . "(quota exceeded)", "composite"); } }