Решение проблем с автоматическим обновлением, если у вас “превышен таймаут…”
Иногда так бывает что сервер, где установлен ваш сайт имеет плохой канал до сервера, с которого обновляется, либо каналы просто сильно загружены. Сегодня в рассылке wp-testers увидел что такое бывает не только “у нас” и там же приведено такое решение – создать плагин, который увеличивает таймайт, либо можно эту функцию вставить куда нибудь в движок или другой активный плагин.
Выглядела ошибка примерно так:
Загрузка не удалась.: Operation timed out after 30000 milliseconds with 15483145 out of 2077956 bytes received
Вот собственно говоря пример такой функции, где 300 – это то количество секунд, которое мы хотим установить вместо дефолтных 30-ти.
function filter_update_timeout($r)
{
if (30 == $r['timeout'])
$r['timeout'] = 300;
return ($r);
}
add_filter('http_request_args','filter_update_timeout');
Автор решения: Peter Westwood http://westi.wordpress.com
Я уже видел что у кого то не хотел обновляться автоматически движок, такое было “когда все разом ломанулись” автообновляться с версии 2.7 до 2.7.1, чем вызвали глобальную просадку моего канала связи. После этого я сделал эксперимент и поставил редирект на уровне вебсервера на другое зеркало на одном хостинге. Проблема с таймаутом сразу пропала, но так не работает автообновление у тех, у кого при обновлении запрашивается ввод адреса сервера, логина и пароля фтп. Там просто писалось “Found” и ничего не качалось (хотя у кого то я видел и работало). Сейчас я снова вернул ссылку на “первое зеркало” и просто увеличил таймаут до 3-х минут. Этого более чем достаточно. В дистрибутиве я уже добавил эту функцию как в ru_RU.php, так и в плагин включения автообновлений, новую версию которого (а также обновленный файл ru_RU.php) можно . Файл ru_RU.php нужно поместить в wp-content/languages, а плагин lecactus_edition_update_url.php в wp-content/plugins. А можно сделать проще – выбрать автоматическую переустановку движка и все файлы у вас обновятся сами. Там же я вложил в архив (ссылка выше) еще и файл big_timeout.php, который вы можете просто установить на любую(не только мою сборку) версию WP2.7 и новее, чтобы увеличить таймаут (грубо говоря функция приведенная выше просто оформлена как плагин готовый). Возможно поможет вам при обновлении плагинов объемных.
Рубрики: Wordpress Метки: 2.7, Wordpress, плагин, полезно
Распечатать
Записи по теме
3 комментария
Комментарии не по теме удаляются! Читайте реадми дистрибутива, комментарии и FAQ! Прежде чем задавать глупые вопросы, прочитайте это. Научитесь ценить чужое время!

(голосов: 1, средний: 4.00 из 5)


24 февраля 2009 в 1:16 (GMT+6)
А тем временем выпустили еще один такой плагин , только прикрутили к нему еще и панель настроек (имхо это лишнее). проще один раз прописать в тело плагина и забыть
27 февраля 2009 в 23:44 (GMT+6)
Эта.. подозреваю сия фича может работать не только с вордпрессом.
Если не трудно – можно логику работы add_filter описать? (из кода понятно, что функция filter_update_timeout возвращает увеличенный таймаут, а вот как его "прикрутить" к любому скрипту – я тут не догоняю)
20 января 2010 в 23:05 (GMT+6)
Спасибо!
Теперь обновил wp нормально =) .