отличный скрипт, применил уже на 3-х сайтах, на одном поставил время 432,000 секунд это 5 дней. хочу обратить внимание что файлы остаются их например на одном сайте уже 2,000, ща делаю чтобы запросы которые старше 15 дней удалялись, они же не используются получется. как посоветуете это сделать? и
ещё - файл с проверкой изменлся ли контент, который подключается в индексе вставляет <!-- content --> как нипытался, но он искажает в ИЕ5-6 отображение, он ставить "<!-- content --> "в самом начале, это <Doctype /> переопределяет чтоли, стили короче едут, верстаю в блочной, поэтому какой дотайп довольно важно
echo "<!--content-->"; $modx->executeParser(); echo "<!--/content-->";
$modx->executeParser();
Так и сделаю, огромное спасибо ещё раз. Я доволен скоростью работы сайтов, Файлов уже на одном из сайтов 17,000 немного беспокоит их кол-во, а в остальном отлично.
Если позволяет место на хостинге, оставляйте все как есть.
А выделите проверяемую область в самом шаблоне в нужном месте уже известными <!-- content --> Все должно получиться.
if (!$file) { траляля } else { траляля }
Еще заметил один баг. В версии 0.9.6 и 0.9.6.1 бывают проблемы, когда при работе скрипта кеширования выдает либо полнрстью белую страницу без ошибок, либо ошибку, что такой-то файл (а именно текстовый файл с кешем) отсутсвует.
Дело в том, что с версией МОДХ 0.9.6.2 этой проблемы нету. Поэтому советую обновить движок до новой версии.
Проблема в том, что в более ранних версиях МОДХ не очень адекватно реагировала в том случае, когда идет роверка на сущестование файла. Т.е. конструкция типа :
if (!$file) { траляля } else { траляля }
вызывала ошибку, хотя ясно указано, что если файла нету, то нужно делать какое-то действие.
Теперь в 0.9.6.2. это, видимо, исправлено, так что ошибки не выдает и проверка проходит успешно. Это мои предположения, но сделанные на основании тестирования и проверки.
if (file_exists($filename)) { if ((@$file=fopen($filename, 'r')) && filemtime($filename)>(time()-$valid)){ flock($file, LOCK_SH); $serial=file_get_contents($filename); $this->ResultData=unserialize($serial); $this->DataDate=filemtime($filename); $this->FromCache=true; fclose($file); return true; } if ($file){ fclose($file); } }
if (file_exists($peak_filename)) { if (@$file=fopen($peak_filename, 'r')){ flock($file, LOCK_SH); $fdata=file($peak_filename); foreach ($fdata as $key=>$value){ $this->Peak[$key]=trim($value); } $this->Peak[0]=floatval($this->Peak[0]); } if ($file){ fclose($file); } }
Спасибо большое помогло .... Но теперь есть ряд вопросов:
1) в предыдущих постах Вы (Раритет) писали "на одном поставил время 432,000 секунд это 5 дней." - где выставлять это время ??
2) опять таки Ваши слова "ща делаю чтобы запросы которые старше 15 дней удалялись" - не секрет - сделали
3) сначала стояла версия 0.9.5 потом обновил до 0.9.6.3.1 потом до 0.9.6.3.2 и после этого данный архив с Кешированием залил на Хост .. все работает на УРА - вместе 8 запросов к базе на главной странице их стало всего 3 =) уже неплохо ... но есть одно маленькое НО ... куда то отвалился TinyMCE в админке ... файлы его есть на серваке ... в админке он не оттображается .. галочки везде стоят, что типа ЮЗАТЬ РЕДАКТОР .. ПОМОГИТЕ !!!!
function MySQLCache($query, $valid=432000){ if ($this->CachePath==''){ $this->CachePath=dirname(__FILE__); } $query=trim($query); if (!eregi('^SELECT', $query)){ return mysql_query($query); } $filename=$this->CachePath.'/'.md5($query).'.txt';