Отключение кэширования в phpBB

В форумном движке phpBB кэширование реализовано через файлы. Кэшируется всё подряд. Например, каждый sql-запрос кладется в отдельный файл, а так как для каждого пользователя выборка из базы может отличаться, то кэш вырастает до 150 000 файлов — реальный пример из жизни (на форуме всего лишь 70 тем и 700 пользователей). Всё это дерьмище лежит в одной папке и немного нагружает чтение с диска. Но в моем случае проблема была в обновлении кэша. Дело в том, что кэшируются еще и шаблоны. Поэтому при изменении шаблона, нужно обновить кэш — это можно сделать через админку. Вот здесь и начинаются проблемы с удалением из папки с десятками тысяч файлов. Скрипт удаления кэша падает с ошибкой 500.

Казалось бы, стандартное решение — отключить кэширование sql-запросов в админке, но такие настройки отсутствуют. Пришлось покопаться в исходниках.

Отключение кэширования sql-запросов

1) Файл /includes/db/mysql.php
Метод sql_query()

Скрываем строку
//$this->query_result = ($cache_ttl && method_exists($cache, 'sql_load')) ? $cache->sql_load($query) : false;
И пишем вместо нее
$this->query_result = false;

2) Файл /includes/acm/acm_file.php
Метод sql_save()
В самое начало метода пишем строчку
return;

Отключение кэширования шаблонов

Файл /includes/template.php
Метод sql_save()

Скрываем строку
//$recompile = (($config['load_tplcompile'] && @filemtime($filename) < filemtime($this->files[$handle])) || !file_exists($filename) || @filesize($filename) === 0) ? true : false;
И пишем вместо нее
$recompile = true;

Теперь шаблоны будут каждый раз браться не из кэша, а перекомпилироваться из исходников. Исходные шаблоны обычно лежат в папке /styles/prosilver/template/

Но лучше включить кэширование шаблонов. Много места они не занимают (20-50 файлов в кэше), а компиляция сделана через регулярные выражения, что по определению не быстро. Отключить кэширование можно при редактировании шаблонов, когда мы не можем удалить старые версии из кэша.

#1

Да согласен, файлов дохера, причем редактировать шаблон напргает постоянно удалять хешь. Спс за помощь сам искать не стал ибо в коде не кайф ковыряться.

RAKETA161, 12.11.2011 - 13:30
#2

Огромное спасибо за информацию! Как раз появилась необходимость отключить sql-кеширование в этом движке.

Виктория, 28.01.2012 - 11:52
 
английский язык для начинающих
Ашманов Египет Москва РХТУ Россия США Снежинск Таиланд Тушино Урал Челябинская область Яндекс алкоголь английский язык баги база данных безопасность бизнес блоги взлом видео выставка выходные горные лыжи дайвинг дауншифтинг допинг идеи идиотизм инвентарь интернет книги кэширование мозг музей ноутбук образование оптимизация отдых отпуск пароль плагин пора сваливать программирование программисты путешествия работа работоспособность радиация реклама самогоноварение собеседование социальные сети спам стартап статистика страны тайм-менеджмент техника учеба фантастика фото фриланс хакер экология электронные деньги юмор Ajax CMS DbSimple DDOS email FireFox Google honda htaccess HTML javascript jQuery life md5 MySQL PHP SEO soft SQL vkontakte Web web 2.0 wordpress