Eсли заглючил gettext
20.04.2009
Нет, это приятно конечно, что хостеры заботятся об обновлении программного обеспечения. Но, наверное, стоило бы и предупреждать пользователей об обновлениях. Ведь чисто случайно понял, что у меня заглючили блоги на wordpress. Причем глюк какой-то не постоянный, а временами. То есть ошибка gettext, то ее уже нет. Но глюк стабильный по времени. Проблема возникает при некорректной работе функции gettext на хостинге или работе системы на 64 битах.
В общем, решение уже ранее предлагалось и лекактусом и на форумах wordpress, даже выложены файлы, корректирующие проблему. Но если с wp27 все оказалось нормальным после замены файлов, то wp233 категорически не хотел стабильно работать с измененными файлами. Что тут было, то ли некорректные файлы изменений (маловероятно), то ли особенности комплекса программного обеспечения хостинга -неясно.
Начали поиск по сети. Напали на сайт brusdeylins.info/wordpress/ Сайт на немецком, но, в общем и целом, предложенное исправление понятно. В файле streams.php (папки wp-includes) меняем
$data = substr($this->_str, $this->_pos, $bytes);
на
$data = "";
for ($i=0; $i<$bytes; $i++) {
$data .= $this->_str[$this->_pos+$i];
};
И вот только в этом случае проблема работы с gettext на блогах нормализовалась. По сообщениям на сайтах, данная конструкция немного замедляет работу блога, но в создавшейся ситуации лучшего выхода не найдено.
P.S. Второе предложение. Изложенно выше проблему в общем-то решило. Однако в админке проявилось подглюкивание с соответствием русского (иногда). Найден еще один вариант решения проблемы. Использовать на сборке 233 го файлы сборки 271 (с учетом патча решения проблемы – см у lecactusa) + ,для удаления глюка в модуле “управления” с отображением числа комментариев, потребовалось скорректировать файл /wp-admin/edit-post-rows.php
Находим
"<a href='edit.php?p=$id&c=1' title='$pending_phrase'>" . __('0') . '</a>',
"<a href='edit.php?p=$id&c=1' title='$pending_phrase'>" . __('1') . '</a>',
"<a href='edit.php?p=$id&c=1' title='$pending_phrase'>" . __('%') . '</a>');
и меняем на
"<a href='edit.php?p=$id&c=1' title='$pending_phrase'>" . ('0') . '</a>',
"<a href='edit.php?p=$id&c=1' title='$pending_phrase'>" . ('1') . '</a>',
"<a href='edit.php?p=$id&c=1' title='$pending_phrase'>" . ('%') . '</a>');
Пока полет нормальный, глюков больше не видно. Чуть упало число запросов на вывод и возросла скорость формирования страниц. Надо тестировать.
Так что, рекомендации почаще заглядывать на свой блог (да и на любой ваш сайт), оказывается не просто риторикой, а важным методом своевременного выявления и последующего устранения возникающих проблем.
Извините, но коментирование запрещено.