Перейти к контенту

Как проверить "живость" форума?


Рекомендуемые сообщения

Извиняюсь, если повторение, но я не нашёл такого вопроса здесь.

 

Суть проблемы: хостинг не бесплатный, но периодически форум перестаёт загружаться. При этом хост пингуется. На том конце поясняют некоторыми техническими работами.

 

Хочется заиметь фишку, которая бы автоматически и периодически (типа каждые 10 мин) тестировала доступность и работоспособность форума, писала бы лог, ну и (в качестве прикола) сообщала бы о проблеме мылом, СМСкой - мне и/или провайдерам :D

 

Буду рад увидеть ваши мнения. Может, кроме меня это нафиг никому не надо?

п.с. Рекомендации по смене хостинга прошу считать неумным офф-топом

Ссылка на комментарий
Поделиться на других сайтах

тема создана в общих вопросах по форумум IPB версий 1.2 - 1.3.x

в свете этого непонятно, как вы хотите на форуме организовать такую вещь, если сам форум будет недоступен.

 

короче, тема не имеет прямого отношения к движку IPB 1.x, да и вообще к форуму. перемещаю.

Ссылка на комментарий
Поделиться на других сайтах

тема создана в общих вопросах по форумум IPB версий 1.2 - 1.3.x

в свете этого непонятно, как вы хотите на форуме организовать такую вещь, если сам форум будет недоступен.

 

короче, тема не имеет прямого отношения к движку IPB 1.x, да и вообще к форуму. перемещаю.

спасибо.

 

понятно пока только одно - эта фишка дожна быть в двух местах: вне форума (источник запроса) и в форуме (ответная часть)

Ссылка на комментарий
Поделиться на других сайтах

У меня есть извращенское предложение :D

На другом хостинге создать скрипт пхп и обратиться к нему со какой-нибудь машины.

 

.... // коннект к базе
if ($arr = @file("http://forum...."))
{
mysql_query("INSERT INTO log (time, result) VALUES (".time().", 'OK' )");
} else {
mail("<admin@site.ru>, <admin@hosting.ru>", "Сайт недоступен", "сабж!");
mysql_query("INSERT INTO log (time, result) VALUES (".time().", 'ERROR' )");
}
sleep(15);
header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);
exit();

Изменено пользователем Anna
Ссылка на комментарий
Поделиться на других сайтах

У меня есть извращенское предложение :D

На другом хостинге создать скрипт пхп и обратиться к нему со какой-нибудь машины.

ну почему же "извращенское"? ;)

осмысливаю: на хосте (где база и движок) создаём этот скрипт. К нему обращаемся - он отвечает по прописанным правилам. Верно?

Ссылка на комментарий
Поделиться на других сайтах

На форуме ничего и не надо делать, просто на другом хосте скрипт типа предложенного выше, а грузить можно любую страницу форума. Но такой вариант не проверит проблемы типа упавшего mysql, тогда надо еще анализировать ответ.

И намного лучше

sleep(15);

header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);

exit();

убрать и запускать скрипт через cron
Ссылка на комментарий
Поделиться на других сайтах

Обращаемся просто к главной странице форума по протоколу http. В результате должен возвратиться массив строк HTML кода, либо FALSE в случае ошибки.

Затем запостить результат в лог, отправить письмо, подождать и редиректнуться на самого себя для повторения операции.

 

Есть подводные камни. Нужно попытаться как можно должно оттянуть SLEEP (задержку итерации), однако время отработки скрита как правило ограничено. Если не запрещено - попробовать функцию SET_TIME_LIMIT(0); . Если не прокатит, то придется выкручиваться иначе...

Есть мысль, что брать по запросу

select time from log order by time desc LIMIT 0, 1

взять время последнего лога, затем, если полученное время отличается от текущего time() меньше чем на скажем твои 10 минут (60*10), то снова сделать SLEEP и редирект, а если интервал в 10 минут пройден, то уже проверять доступность форума.

 

//------------------

 

2 профф

 

CRON - это дело, но мы сейчас рассматриваем возможность опроса платного хостинга со стороны бесплатного хостинга. Думаю, найти бесплатный хостинг с кроном будет непросто....

 

//-----------------

 

Но такой вариант не проверит проблемы типа упавшего mysql, тогда надо еще анализировать ответ.

 

Ну само собой - уже можно крутить :D

foreach ($arr as $entry) {
if (str_replace("SQL Error", "!", $entry) != $entry) {
..... // обработка ошибки sql
break; // чтоб один раз ее обработать, т.к. может несколько раз встретиться
}
}

Изменено пользователем Anna
Ссылка на комментарий
Поделиться на других сайтах

2 Anna но твой вариант требует постояно открытого браузера на этой странице, уж лучше тогда скрипт на своем домашнем компе поставить. ИМХО лучше тогда инициировать запуск через cron на хостере форума (или Task Manager форума)
@file("http://скрипт проверки")
Ссылка на комментарий
Поделиться на других сайтах

Да, согласна, в этом минус, но скрипт на домашнем компе скорей всего не сможет отправить письмо, по крайней мере я не знаю как это делается, у меня на локалхосте стоит денвер, который просто эмулирует отправку.

Ну а Task Manager форума работает при обращении пользователя, а если форум упал, то таск менеджер не запустится :D

Так что лучше конечно крон, если он есть, я согласна.

Ссылка на комментарий
Поделиться на других сайтах

Спасибо всем.

Т.к. я не шарю в РНР, то мне потребуется время для осмысления и реализации. По ходу буду беспокоить вас вопросами :D

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.