Внешне это выражалось в длительной попытке загрузки страницы, с последующим пустым выводом.
В 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...
Написать комментарий