Упражнения с модулем boost для Drupal 5.х

Главные вкладки

Аватар пользователя Toologic Toologic 26 апреля 2007 в 0:30

Как это обычно бывает, со временем возникают ситуации, когда сайт уже "не тянет". Это определяется многими показателями. Это и наличие большого числа( объема) контента, и наличие зарегиных пользователей, и (безусловно) "списочный состав" установленных модулей.

В общем вспомнил о старом (достаточно) модуле для 4.7 - boost.

Основная задача этого модуля - генерация статических страниц, складирование их в каталоге \cache\имя-сайта\0\структура-каталогов-как-зеркало-урла

Т.е. например, если урл вашей новости виден в сети как newssite.ru\news\2007\04\25\12345 (по pathauto, по path он будет виден как \node\12345) То будет создана 2 каталога:
news\2007\04\25\ и в нем 12345.html файл и \node и в нем соответствено 12345.html

Причем следует заметить, что на самом деле первый файл 12345.html это не файл, а ссылка на файл (symlink) И это справедливо, ведь реальный-то урл - node\12345, а news\2007\04\25\12345 - это его синоним (подмена)

Ну в общем пошел я на офф сайт, и в дебатах выяснил, что автор де занят сильно, ему сил тока-тока на разгребание ошибок в 4.7 хватает и к 5-ой версии приступит, если найдутся бойцы кои ему эти патчи помогут написать. Вот тогда-то он во всеми силами и возьмется.

Среди авторов постов был замечен и небезызвестный нам всем Axel. Поспрошав про планы на версию 5, услышав вышеизложенное, подождав некое время, взял да и написал (апгрейднул) модуль до версии 5.х - читайте здесь http://drupal.org/node/103892

В общем взял я сей модуль на вооружение и начал с ним, так сказать исполнять танцы с бубнами.

Поставил ( обновил .htaccess) - и тишина. Ничего не происходит... все осталось как есть, ну, думаю, уже хорошо.

Смотрю error_log апача - а там
-неопределена функция drupal_get_normal_path в 14 строке модуля boost.module

Смотрю api.drupal.org - сея функция в path.inc определена.

Пришлось вставить
include_once './includes/path.inc'; чуть выше по коду и все заработало.

Ну далее опять посыпались ошибки, типа syslink() неизвестная функция. Искал в коде drupal - Не нашел. Оказалось, что это php-функция и в windows-платформах не работает. (сразу сообщу, что в пхп я не очень...так только основы. функции наизусть как Object Pascal я не знаю)
Ну думаю - делать нечего поставлю на боевой сервер - тама всеж не онка-форточки, а самая что ни на есть freeBSD.

Поставил. Работать начала, файлики, директории в каталоге cache стали создаваться, Каращо! Тока смотрю особенность какая-то есть! Файлы по "живому" урлу создаются (\node\12345.html) а по линку нет. нет фала \news\2007\04\25\12345.html ! И весь watchdog вот такими ошибками полон

Unable to create symlink: /home/uХХХХ/мой_сайт.ru/www/cache/мой_сайт.ru/0/news/2007/04/25/3337.html to /home/uХХХХ/мой_сайт.ru/www/cache/мой_сайт.ru/0/node/3337.html

и еще

symlink() [<a href='function.symlink'>function.symlink</a>]: open_basedir restriction in effect. File(/node/3337.html) is not within the allowed path(s): (/home/uXXXXX/) в файле /home/uXXXXX/мой_сайт.ru/www/sites/all/modules/boost/boost.helpers.inc в строке 83.

Кто разбирался с boost`om Подскажите! плз!

ЗЫ на сервере стоит Apache ??? (drupal не определяет) php 5.2.x, mysql 5.x, Drupal 5.1

Комментарии

Аватар пользователя B.X B.X 26 апреля 2007 в 1:46

не знаю, он у меня и на 4.7 не вставал... то есть файлы создавал... но не работал...
а сейчас-то уж не знаю... да и динамики сайт не хотелось бы лишать... иначе зачем вообще CMS нужен...

больше хотелось бы не модуль, такой как boost, а примерно похожий, который при отсутствии коннекта с базой данных, перебрасывал бы пользователя на сохранённую html версию сайта...

Аватар пользователя axel axel 26 апреля 2007 в 11:08

На drupal.org я кинул патч, но поскольку автор не проявил пока интереса к апагрейду, то я продолжаю вести разработку у себя - позже общий патч с изменениями выложу на drupal.org. Поэтому последние исходники лучше брать отсюда: http://www.drupal.ru/repo/modules/boost/5.x/ (можно броузером, а вообще там репозитарий под Bazaar-NG - $bzr get http://www.drupal.ru/repo/modules/boost/5.x).

Замеченные баги: иногда вместо кешированной страницы index.php подставляется access denied. Иногда кешируются "старые" версии страниц, для тех страниц которые имеют пейджер (например для tracker будет показываться содержимое tracker?page=2). Вообще фича модуля, страницы с параметром '?' не кешировать, т.е. tracker должен кешироваться, а tracker?page=2 вообще не должен - это работает, но судя по всему не всегда как надо.

Вообще, модуль заточен под юниксовую платформу. На windows можно даже не пробовать сейчас. Линки на внутренние директории создаются корректно, ошибок с ними не заметил, ошибки с drupal_get_normal_path в текущей версии также не замечено.

Багрепорты по модулю принимаются - будут с ним разбираться дальше. Пока имхо на продуктиве применять рискованно - с drupal.ru его я убрал. Да, на drupal.ru после включения модуля начались проблемы с отлогиниванием пользователей - подсовывались кешированные страницы юзерам которые уже вошли на сайт. Вроде я это поборол, но надо тестировать ещё.

Аватар пользователя satos satos 16 августа 2007 в 19:30

А должно пройти какое-то время, чтобы boost прокешировал страницы? А то у меня некоторые ноды кешируются, а некоторые нет... (например, 3220 кешируется, а 1195 - нет).

Аватар пользователя axel axel 23 августа 2007 в 19:20

Кешируется при обращении любого посетителя к ноде. Следущий раз для анонима результат будет выбран из кеша. При этом, через некоторое время (время жизни в кеше) страница из кеша стирается и обратившись к ней результат снова будет генерироваться движком и записываться в кеш.

Аватар пользователя Stargazer Stargazer 17 февраля 2010 в 0:58

Хм ... На D6 странный эффект. Авторизованный пользователь попадая на главную страницу теряет права до анонима. Причем происходит это только на главной - все остальные страницы и разделы ведут себя адекватно.

Да, на drupal.ru после включения модуля начались проблемы с отлогиниванием пользователей - подсовывались кешированные страницы юзерам которые уже вошли на сайт. Вроде я это поборол, но надо тестировать ещё.

Подскажите пожалуйста в чем тут проблема и где крутить ориентировочно?