Наши заметки о MODx
В этом разделе мы будем собирать небольшую копилку секретов по работе с системой управления контентом сайта (CMS) MODx. Эти заметки ни в коем случае не претендуют на лавры документации. На нашем сайте тема MODx вообще занимает небольшой уголок, и эти материалы мы размещаем только потому, что по роду основной работы нам приходится оказывать техническую поддержку нескольким десяткам организаций, использующих наши прототипы сайтов. В то же время кое-что может пригодиться и другим людям.
Мы не претендуем на изложение "истины в последней инстанции". Наверняка в этих заметках гуру MODx найдут неточности и ошибки. Мы будем очень благодарны, если на это нам укажут в комментариях.
В заметках мы стараемся не просто сразу приводить готовое правильное решение, но и показываем, как мы набивали шишки в процессе поиска.

Ужасный сбой любимого плагина


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

 

Внешне это выражалось в длительной попытке загрузки страницы, с последующим пустым выводом.

В error_log записывалось сообщение

ALERT - possible memory corruption detected - unknown Hashtable destructor

На локальном сервере все работало прекрасно.

Разумеется, мы с администратором сервера проверили пути к файлам, все мыслимые настройки, версии PHP и прочего. Ничего не помогало!

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

Путём трассировки  было выяснено, что до PhpThumb дело вообще не доходит. Трассировка показала, что не дорабатывает до конца функция parse в simple_html_dom.php. Обрабатывает пару строку в цикле  while ($this->parse());  внутри функции load. Далее - ничего.  Выход из while не происходит вообще.

Библиотека  simple_html_dom.php вообще сторонняя для DirectResize. С её помощью парсится html, выявляются ссылки на картинки и их адреса заменяются на вызов image.php с наборомпараметров. А там уж подключается и создание превьювов.

Углубленно разбираться с  simple_html_dom.php ввремени не было, поэтому мы поступили просто по-варварски - закомментировали  в функции Process вызов _setCSSBindingLabel. И всё заработало!

DirectResize фактически мы "полуоткатили" назад с версии 0.9 rev.6. Результат, устраивающий нас достигнут, но осадок остался - причина осталась не выявленной.

Пока что имеются подозрения на 64-битную серверную OS  - OpenSUSE 10.3.

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

 

22-04-2009 13:54:51



    Содержание раздела «Проблема с DirectResize»:
Комментарии любых посетителей

Написать комментарий