Вывод статической страницы когда Друпал "дохнет"

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

Аватар пользователя Anodonta Anodonta 25 июня 2009 в 10:36

Хочу:
Если у хостера проблемы с базой данных, - не возможно зайти в PhpMyAdmin, а вместо сайта в это время отображается белая страница, то хотелось бы видеть на экране статическую страницу с надписью: "Хостинг опять сдох". Или что-то другое.

Для чего:
Т.к. техническая поддержка хостера отвечает что всё хорошо, (а такие перебои по 10-15 минут 4-10 раз в день) то товарищ, которому я поддерживаю сайт немного на меня обижается. А так зайдёт, посмотрит и будет обижаться на хостера Smile

Итого:
Как вывести на экран статическую страницу в данном случае?

Комментарии

Аватар пользователя Azerot Azerot 25 июня 2009 в 10:42

Так Drupal и выводит статическую страницу, если не может подключиться к БД.
Вы логи почитайте вашего веб-сервера. Там должны быть ошибки при невозможности подключения к БД

Аватар пользователя Anodonta Anodonta 25 июня 2009 в 10:50

"Azerot" wrote:
Там должны быть ошибки при невозможности подключения к БД

Так у хостера база данных "отпадает". А доступ к файлам через административную хостинг-панель у меня остаётся.
Вопрос не в отключении от базы а в выводе, в таком случае, статической страницы с моей надписью.

Аватар пользователя Azerot Azerot 25 июня 2009 в 11:31

Вы не поняли.
Если Drupal не может соединится с БД он выдаёт свою статическую страницу об этом.
А вот если белый экран - это уже не БД, это 500-я ошибка. Тогда вам надо просто написать в .htaccess своё правило, если 500-я, то показывать такую-то страницу. Например:

ErrorDocument 500 /500.html

Аватар пользователя xanderz xanderz 25 июня 2009 в 11:54

ErrorDocument 500 в случае fatal error не поможет, т.к. php не возвращает статус выполнения скрипта в отличии например от perl. А именно на этом статусе срабатывает ErrorDocument.
Тут нужно извращаться с отловом этих самых fatal error внутри скриптов, задавая обрамление кода ошибок через
ini_set('error_prepend_string', '<маркер>');
ini_set('error_append_string', '');
а потом отлавливая этот код в функции catchFatalError зарегистрированной к исполнению на выходе
register_shutdown_function('catchFatalError');

Аватар пользователя xanderz xanderz 26 июня 2009 в 8:18

Azerot wrote:
Перед тем как утверждать, что вам что-то не поможет, вы пробовали?

конечно пробовал и единственное что помогло как раз описанный мной метод.

Аватар пользователя Anodonta Anodonta 25 июня 2009 в 12:51

Не помогло.
Браузеры молчат, только Chrome о чём-то тихо шепчет "Ошибка 324 (net::ERR_EMPTY_RESPONSE): Неизвестная ошибка."

Аватар пользователя Azerot Azerot 26 июня 2009 в 8:30

Я бы лучше хостера сменил, чем так извращаться.
На моём хостинге работает всё именно так как я описал, т.е. всё по честному - 500я, значит 500я. Нет коннекта к базе - статическая страница самого Drupal.

Аватар пользователя Anodonta Anodonta 1 июля 2009 в 11:52

"Azerot" wrote:
Нет коннекта к базе - статическая страница самого Drupal

Я так понимаю, что Друпал и есть база данных. Поэтому, если у хостера не работает компьютер с базой данных, то и сайт автоматом накрывается. Но Вы говорите, что у Вас страница статическая самого Друпала показывается. Можно по-подробнее, а что это за страница и где она "живёт"?

Аватар пользователя Azerot Azerot 1 июля 2009 в 12:31

Живёт в database.inc в функции _db_error_page
а выглядит так:

Site off-line

The site is currently not available due to technical problems. Please try again later. Thank you for your understanding.

If you are the maintainer of this site, please check your database settings in the settings.php file and ensure that your hosting provider's database server is running. For more help, see the handbook, or contact your hosting provider.

Аватар пользователя Anodonta Anodonta 1 июля 2009 в 14:34

"Azerot" wrote:
а выглядит так:

Site off-line


Спасибо огромное!
А как мне заменить эту информацию про офлайн на свою?
Есть доступ к FTP и MySQL

Аватар пользователя Anodonta Anodonta 2 июля 2009 в 17:31

Файл database.inc посмотрел, понял только, что в файле:
common.inc можно написать слова для заголовка офлайновой страницы в строке 342:
drupal_set_title(t('Site off-line'));

А остальной текст надписи где можно изменить?

Аватар пользователя Azerot Azerot 2 июля 2009 в 18:11

Вы издеваетесь что ли?
Я же ясно сказал какой функцией выводится означеное сообщение. Чего ещё не понятно-то?
Вообще судя по строке 342 где у меня совсем другое мы (на всякий случай) об одном Drupal говорим? Я о 6.x