/** * Deletes the file * with predefined path (current request uri) * * @return void */ public function delete() { if ($this->cacheFile && $this->cacheFile->isExists()) { $cacheDirectory = $this->cacheFile->getDirectory(); $fileSize = $this->cacheFile->getFileSize(); if (defined("BX_COMPOSITE_DEBUG")) { $backupName = $this->cacheFile->getPath() . ".delete." . microtime(true); if ($this->checkQuota()) { AddMessage2Log($backupName, "composite"); $backupFile = new Main\IO\File($backupName); $backupFile->putContents($this->cacheFile->getContents()); $this->writeStatistic(0, 0, 0, 0, $fileSize); } else { AddMessage2Log($backupName . "(quota exceeded)", "composite"); } } $this->cacheFile->delete(); //Try to cleanup directory $children = $cacheDirectory->getChildren(); if (empty($children)) { $cacheDirectory->delete(); } //Update total files size $this->writeStatistic(0, 0, 0, 0, -$fileSize); } }
/** * Deletes TmpFile. * The method attempts to destroy content (cloud or file from file system). * @return bool */ public function delete() { if ($this->isCloud()) { $bucket = $this->getBucket(); if (!$bucket) { return false; } if (!$bucket->deleteFile($this->path)) { $this->errorCollection->addOne(new Error('Could not delete file from bucket.', static::ERROR_DELETE_CLOUD_FILE)); return false; } } else { $file = new IO\File($this->getAbsolutePath()); if ($file->isExists()) { if (!$file->delete()) { $this->errorCollection->addOne(new Error('Could not delete file.', static::ERROR_DELETE_FILE)); return false; } } } return $this->deleteInternal(); }
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); } }