[РЕШЕНО] З̶а̶в̶и̶с̶а̶е̶т̶ ̶L̶o̶c̶a̶l̶i̶z̶a̶t̶i̶o̶n̶U̶p̶d̶a̶t̶e̶ Скрипт CallMe + D6 = зависания на страницах /batch?op=start&id=

Главные вкладки

Аватар пользователя vkapas vkapas 13 апреля 2013 в 19:55

Пару дней назад на новом сайте с последними версиями 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), пляшем и поём песни.

Комментарии

Аватар пользователя vkapas vkapas 13 апреля 2013 в 21:28

Хостинг — IT-patrol. На другом сайте, который находится на этом же хостинге и этом же сервере, и тоже работает на D6, обновления переводов работают нормально.

Последнее удачное обновление с помощью Localization update было выполнено 12 Апр 2013, 02:18:

Успешно загружен http://ftp.drupal.org/files/translations/6.x/ckeditor/ckeditor-6.x-1.13.ru.po в /tmp/translation-L4AHzI

Затем я установил SWFUpload, но забыл доставить его библиотеку 12 Апр 2013, 02:20:

array_shift() [<a href='function.array-shift'>function.array-shift</a>]:
The argument should be an array в файле /home/uXXXX/domains/newsite.ru/sites/all/modules/swfupload/swfupload.module в строке 157.

Сразу за ней идёт запись об успешном переводе 12 Апр 2013, 02:20:

Обновлен JavaScript-файл перевода для языка Русский.

И после опять ошибка SWFUpload 12 Апр 2013, 02:22:

array_shift() [<a href='function.array-shift'>function.array-shift</a>]:
The argument should be an array в файле /home/uXXXX/domains/newsite.ru/sites/all/modules/swfupload/swfupload.module в строке 157.

После этих записей любое обновление перевода выглядит так:

Тип                                  l10n_update
Дата                                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».

Аватар пользователя vkapas vkapas 14 апреля 2013 в 1:18

Хостинг, действительно, оказался ни при чём, как и 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/

Аватар пользователя vkapas vkapas 14 апреля 2013 в 12:36

Хорошо, но как? Сейчас скрипт подключен отдельно на страницах page.tpl.php (внутренние страницы сайта) и page-front.tpl.php (Главная).

Аватар пользователя FORTIS FORTIS 14 апреля 2013 в 13:24

в template.php пишите

function ИМЯВАШЕЙТЕМЫ_preprocess_page(&$vars) {
if(arg(0) != 'admin') {
drupal_add_js(path_to_theme() . '/js/jquery.1.9.min.js'); // примерно
$vars['styles'] = drupal_get_css();
}
}

если там уже есть функция _preprocess_page то просто добавьте в нее 4 этих строчки

Аватар пользователя FORTIS FORTIS 14 апреля 2013 в 14:30

как более простой вариант: использовать другую тему для административных страниц

Закачиваете темы:
http://drupal.org/project/tao
http://drupal.org/project/rubic

и ставите rubic как тему для админки в Administer -> Site configuration -> Administration theme

Аватар пользователя FORTIS FORTIS 14 апреля 2013 в 14:31

и не забываем дать права доступа на использование темы для админ страниц, если вы не только под uid=1 админите

Аватар пользователя FORTIS FORTIS 14 апреля 2013 в 14:37

"vkapas" wrote:
Хорошо, но как? Сейчас скрипт подключен отдельно на страницах page.tpl.php (внутренние страницы сайта) и page-front.tpl.php (Главная).

если вариант исключающий jquery 1.9 на admin/ то убрать из tpl.php прямое подключение и делать через drupal_add_js

Аватар пользователя vkapas vkapas 10 мая 2013 в 13:31

Большое спасибо за подсказки, но, к сожалению, ни один из трёх предложенных вариантов не сработал.

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= выполняются НЕ на административной странице.

Аватар пользователя vkapas vkapas 11 мая 2013 в 0:51

"FORTIS" wrote:
2. http://drupal.org/project/admin_theme
The Administration theme module allows you to use this theme on more pages like :
- batch processing pages

Очень странно, потому что на моих сайтах (3 штуки с D6 разной степени свежести) batch-процессы выполняются, насколько я вижу, на странице не с админской (везде Garland), а с основной темой сайта.

"FORTIS" wrote:
ну и посмотрите README в SWFUpload - ту ли версию библиотеки берете

Что касается SWFUpload. Этот модуль здесь не при чём, я упоминал его в самом начале, поскольку не знал причин зависаний на batch-страницах.

А сейчас, как я уже писал, выяснилось, что проблема возникает при подключении jquery.js от скрипта «обратного звонка» CallMe. Как только подключаю jquery.js (версии 1.9) от этого скрипта — в файле .info или в шаблоне страницы page.tpl.php — все процессы на любых batch-страницах начинают зависать; как только я отключаю jquery.js — проблема исчезает, но скрипт CallMe перестаёт работать. Дилемма.

Аватар пользователя vkapas vkapas 11 мая 2013 в 1:39

Кстати, раз я тут всё равно скачу вокруг да около /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 и ждал своей очереди?

Аватар пользователя FORTIS FORTIS 11 мая 2013 в 20:11

Quote:
Очень странно, потому что на моих сайтах (3 штуки с D6 разной степени свежести) batch-процессы выполняются, насколько я вижу, на странице не с админской (везде Garland), а с основной темой сайта.

галочкой тема включена в настройках тем? в модуле тоже стоит галочка для batch?

Аватар пользователя vkapas vkapas 11 мая 2013 в 20:17

"FORTIS" wrote:
галочкой тема включена в настройках тем?

Да. Все админ-задачи открываются на страницах с оформлением Garland.

"FORTIS" wrote:
в модуле тоже стоит галочка для batch?

В каком модуле? Где искать эту галочку?

Аватар пользователя vkapas vkapas 10 ноября 2015 в 11:49

По-моему это — скрин семёрки.

В D6 страница /admin/settings/admin выглядит вот так:

Про batch нет ни слова, увы.

Естественно, галка «Использовать администраторскую тему оформления при редактировании содержимого» не помогает.

Аватар пользователя vkapas vkapas 11 мая 2013 в 21:01

Прошу прощения, не сразу понял, что это действительно отдельный модуль, а не архив поставляемой с Drupal админ-темы.

Поставил, настроил, протестировал. Проблема решена. Ещё раз спасибо!

Аватар пользователя logi logi 5 июня 2013 в 18:32

У меня вопрос, - проблема зависания при включении jquery.js для скрипта Callme решилась? И, если можно, поподробней, как обратный звонок был установлен. У меня, как и у большинства, кто пытался прикрутить его к Друпалу, не работает

Аватар пользователя vkapas vkapas 5 июня 2013 в 21:01

Если речь о зависаниях на 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/jquery.js" type="text/javascript">&nbsp;</script>
<script src="/callme/js/callme.js" type="text/javascript">&nbsp;</script>

(без & nbsp ; тоже будет работать, у меня они стоят для CKeditor)

3. В настройках блока указываете "Показывать на всех страницах, кроме перечисленных":

admin
admin/*
node/add/*
node/*/
edit
batch*

4. И устанавливаете блок в любой регион сайта (главное, чтобы он был включен).

5. Если хочется изменить тему скрипта, то код темы нужно поставить в page.tpl.php в раздел head, желательно, перед /script и перед <?php print $scripts; ?>:

<head>
...
<script>
var cm_style = "vk"; // <---вместо vk указываем название темы CallMe
</script>

<?php print $scripts; ?>
</script>
</head>

Вот и всё. Если что-то не заработало, попробуйте очистить кэш (и сайта и браузера).

Аватар пользователя logi logi 6 июня 2013 в 15:34

Блин, как оказывается все просто. Administration theme установил уже давно (тоже была проблема с обновлениями русификации), но сколько не бился, Callme запустить не мог. Сейчас все заработало. Респект и уважуха!!!