Перейти к содержимому


Очистка кэша


  • Вы не можете ответить в тему
В этой теме нет ответов

#1 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 30 Март 2014 - 02:30

По сути нечего сложного. На одном из саас столкнулся с проблемой на ограничение количества файлов в пределах аккаунта. Эти ограничения напрямую зависят от количества выделенного места. И часто если файлы уж больно мелкие можно превысить такой лимит. Это касается, например, картинок в таблицах - они кэшируются. Поэтому требуется очистка кэша. Достаточно добавить задание по крону. Код наваял за мин 5. Возможно кому-то и пригодится.

namespace service;

class CleanCache {
	private $list = array();
	private $path;
	private $count = 0;
	private function getListFiles() {
		if(is_dir($this->path)) {
			$this->list = array_slice(scandir($this->path), 2);
		}
		else {
			throw new \Exception("The " . $this->path . " is not a directory");
		}
	}
	private function delCacheFile() {
		foreach($this->list as $file) {
			$filePath = $this->path . "/" . $file;
			if(file_exists($filePath)) {
				if(unlink($filePath)) {
//					echo "delete done " . $filePath . "\r\n";
					$this->count++;
				}
			}
		}
	}
	private function printCount() {
		echo "\r\n";
		echo "delete files: " . $this->count;
		echo "\r\n";
	}
	public function  delCache($_path) {
		$this->path = $_path;
		$this->getListFiles();
		$this->delCacheFile();
//		$this->printCount();
		return 'done';
	}
}
$files = new CleanCache();
echo $files->delCache("cache");

Просто добавляете этот код в крон и выставляете периодичность.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных