Пару дней назад на новом сайте с последними версиями D6 и Localization update ни с того ни с сего стал зависать процесс обновления перевода.
То есть после добавления модуля или после нажатия «Обновить переводы» (на странице admin/build/translate/update) открывается страница с прогресс-баром и надписью «Скачивание и импортирование файлов» и... больше ничего не происходит. Просто висит страница с бегающим прогресс-баром.
Ума не приложу, из-за чего началась такая фигня, потому что до этого сайт почти месяц работал нормально, переводы обновлялись без проблем. По-моему, перед тем, как появилась проблема, я ставил модуль SWFUpload, ну и jQuery Plugin Handler. Пробовал их отключать, но лучше от этого не стало.
В чём может быть проблема?
UPD.
Зависает не только Localization update, а всё, что выполняется на страницах вида /batch?op=start&id=.
Проблема — новой версии jQuery, которая нужна для работы скрипта CallMe, установленного на сайте.
Если не подключать к теме сайта jQuery 1.9 (которая идёт с этим скриптом), то скрипт CallMe не работает.
Если подключить jQuery, идущий в комплекте со скриптом, то начинаются проблемы с /batch?op=start&id=.
UPD2.
Решено.
Ставим модуль Administration theme, на странице /admin/settings/admin ставим галку «Пакетная обработка» (Batch Processing), пляшем и поём песни.
Комментарии
Что в логах? Хостинг/сервер/vps не может винуть/тормозить?
Хостинг — IT-patrol. На другом сайте, который находится на этом же хостинге и этом же сервере, и тоже работает на D6, обновления переводов работают нормально.
Последнее удачное обновление с помощью Localization update было выполнено 12 Апр 2013, 02:18:
Затем я установил SWFUpload, но забыл доставить его библиотеку 12 Апр 2013, 02:20:
The argument should be an array в файле /home/uXXXX/domains/newsite.ru/sites/all/modules/swfupload/swfupload.module в строке 157.
Сразу за ней идёт запись об успешном переводе 12 Апр 2013, 02:20:
И после опять ошибка SWFUpload 12 Апр 2013, 02:22:
The argument should be an array в файле /home/uXXXX/domains/newsite.ru/sites/all/modules/swfupload/swfupload.module в строке 157.
После этих записей любое обновление перевода выглядит так:
Дата 13 Апр 2013, 20:50
Пользователь admin
Место http://newsite.ru/batch?id=10&op=do
Источник отсылки http://newsite.ru/batch?op=start&id=10
Сообщение Успешно загружен http://ftp.drupal.org/files/translations/6.x/swfupload/swfupload-6.x-2.0-beta8.ru.po в /tmp/translation-UtHmp0
Дата 13 Апр 2013, 20:50
Пользователь admin
Место http://newsite.ru/batch?id=10&op=do
Источник отсылки http://newsite.ru/batch?op=start&id=10
Сообщение Файл /tmp/translation-UtHmp0 импортирован в язык ru. Добавлено строк — 0, обновлено — 11, удалено — 0.
То есть, всё вроде бы в порядке, и в отчётах Drupal обновления последние 2 дня скачиваются не только для модуля swfupload. Однако последние 3 раза за последний час Localization update скачал одно и тоже обновление, — для модуля swfupload, — при том, что на сайте есть ещё не переведённые модули, для которых перевод доступен.
И, кстати, перевод для модуль swfupload так и не был установлен, если верить странице admin/build/translate/update, где написано, что доступно обновление от «8 Фев 2011».
Буквально 10 минут назад залил сайт на патруль и запускал Localization Update. Примерно 8000 строк стянулись окейно.
Хостинг, действительно, оказался ни при чём, как и Drupal, как и модули. Проблема возникает на всех страницах вида /batch?op=start&id=.
Наткнулся на эту запись и выяснил, проблема возникает из-за конфликта JS-скриптов. На сайте сейчас установлен скрипт "обратного звонка" CallMe, который требует для работы jquery.js >=1.9. И этот jquery.js я подключил в тему сайта (Bluemasters).
Как только я отключаю вызов jquery.js, идущего со скриптом CallMe, обновления переводов сразу начинают работать (и все остальные операции, имеющие в URL batch?op=start&id=). Правда, после этого перестаёт работать сам CallMe.
Решения пока не нашёл. В теме выше видел совет поместить
<?phpif (isset($_COOKIE['has_js']) && $_COOKIE['has_js']) {
return _batch_progress_page_nojs();
}
else {
return _batch_progress_page_nojs();
}?>
видимо, в template.php, что мою проблему решило, но создало новую — операция очистки кэша сайта завершается пустой страницей, поэтому от такого решения я отказался.
Есть ли ещё варианты? Если что, сайт — http://newsite.u7137.moon.vps-private.net/
просто не подключайте его в admin/*
Хорошо, но как? Сейчас скрипт подключен отдельно на страницах page.tpl.php (внутренние страницы сайта) и page-front.tpl.php (Главная).
в template.php пишите
if(arg(0) != 'admin') {
drupal_add_js(path_to_theme() . '/js/jquery.1.9.min.js'); // примерно
$vars['styles'] = drupal_get_css();
}
}
если там уже есть функция _preprocess_page то просто добавьте в нее 4 этих строчки
как более простой вариант: использовать другую тему для административных страниц
Закачиваете темы:
http://drupal.org/project/tao
http://drupal.org/project/rubic
и ставите rubic как тему для админки в Administer -> Site configuration -> Administration theme
и не забываем дать права доступа на использование темы для админ страниц, если вы не только под uid=1 админите
если вариант исключающий jquery 1.9 на admin/ то убрать из tpl.php прямое подключение и делать через drupal_add_js
Большое спасибо за подсказки, но, к сожалению, ни один из трёх предложенных вариантов не сработал.
1. Код
<?phpfunction ИМЯВАШЕЙТЕМЫ_preprocess_page(&$vars) {
if(arg(0) != 'admin') {
drupal_add_js(path_to_theme() . '/js/jquery.1.9.min.js'); // примерно
$vars['styles'] = drupal_get_css();
}
}?>
убрал зависания, но скрипт работать перестал.
2. Вариант с темами Tao и Rubik не решил проблему, т.к. все /batch?op=start&id= выполняются не на административных страницах, а на обычных, т.е.
http://site.ru/batch?op=start&id=1
соответственно, на этих страницах используется стандартная тема сайта, в моём случае Bluemasters.
3. Пробовал различные варианты с drupal_add_js, но скрипт с ними ни в какую работать не захотел. И, опять же, все /batch?op=start&id= выполняются НЕ на административной странице.
2. http://drupal.org/project/admin_theme
The Administration theme module allows you to use this theme on more pages like :
- batch processing pages
- devel node load and render pages
- coder code review pages
- pages you define yourself in the provided textarea
ну и посмотрите README в SWFUpload - ту ли версию библиотеки берете
Очень странно, потому что на моих сайтах (3 штуки с D6 разной степени свежести) batch-процессы выполняются, насколько я вижу, на странице не с админской (везде Garland), а с основной темой сайта.
Что касается SWFUpload. Этот модуль здесь не при чём, я упоминал его в самом начале, поскольку не знал причин зависаний на batch-страницах.
А сейчас, как я уже писал, выяснилось, что проблема возникает при подключении jquery.js от скрипта «обратного звонка» CallMe. Как только подключаю jquery.js (версии 1.9) от этого скрипта — в файле .info или в шаблоне страницы page.tpl.php — все процессы на любых batch-страницах начинают зависать; как только я отключаю jquery.js — проблема исчезает, но скрипт CallMe перестаёт работать. Дилемма.
Кстати, раз я тут всё равно скачу вокруг да около /batch?op=start&id=...
Возник вопрос: а не возникнет ли проблем от таких «зависших» страниц? Допустим, сейчас при выполнении произвольного задания (например, поиск битых ссылок) Drupal переходит на страницу http://site.ru/batch?op=start&id=51, а 10 предыдущих таких заданий из-за экспериментов с версиями jquery были (или остались?) зависшими. Я до сих пор могу, например, зайти на страницу http://site.ru/batch?op=start&id=42 и завершить процесс, который был запущен 2 недели назад. Поэтому и напрашивается вопрос: все эти 2 недели процесс как-то мог нагружать ресурсы сайта/сервера или просто висел висяком без всякого вреда для Drupal и ждал своей очереди?
галочкой тема включена в настройках тем? в модуле тоже стоит галочка для batch?
Да. Все админ-задачи открываются на страницах с оформлением Garland.
В каком модуле? Где искать эту галочку?
модуль http://drupal.org/project/admin_theme
По-моему это — скрин семёрки.
В D6 страница /admin/settings/admin выглядит вот так:

Про batch нет ни слова, увы.
Естественно, галка «Использовать администраторскую тему оформления при редактировании содержимого» не помогает.
Прошу прощения, не сразу понял, что это действительно отдельный модуль, а не архив поставляемой с Drupal админ-темы.
Поставил, настроил, протестировал. Проблема решена. Ещё раз спасибо!
ну и слава богу
У меня вопрос, - проблема зависания при включении jquery.js для скрипта Callme решилась? И, если можно, поподробней, как обратный звонок был установлен. У меня, как и у большинства, кто пытался прикрутить его к Друпалу, не работает
Если речь о зависаниях на batch-страницах, то, да проблему решили. Для этого нужно установить модуль Administration theme и на странице /admin/settings/admin поставить галку "Batch processing" ("Пакетная обработка").
Но есть способ проще.
1. Скачиваете скрипт CallMe в корень сайта И в корень темы:
site.ru/callme
site.ru/sites/all/themes/site-theme/callme
(на всякий случай отмечу, что мне достаточно было скопировать скрипт в корень сайта, хотя многие пишут, что так не работает)
2. Создаёте блок, помещаете в него код
<script src="/callme/js/callme.js" type="text/javascript"> </script>
(без & nbsp ; тоже будет работать, у меня они стоят для CKeditor)
3. В настройках блока указываете "Показывать на всех страницах, кроме перечисленных":
admin/*
node/add/*
node/*/edit
batch*
4. И устанавливаете блок в любой регион сайта (главное, чтобы он был включен).
5. Если хочется изменить тему скрипта, то код темы нужно поставить в page.tpl.php в раздел head, желательно, перед /script и перед <?php print $scripts; ?>:
...
<script>
var cm_style = "vk"; // <---вместо vk указываем название темы CallMe
</script>
<?php print $scripts; ?>
</script>
</head>
Вот и всё. Если что-то не заработало, попробуйте очистить кэш (и сайта и браузера).
Блин, как оказывается все просто. Administration theme установил уже давно (тоже была проблема с обновлениями русификации), но сколько не бился, Callme запустить не мог. Сейчас все заработало. Респект и уважуха!!!