На днях (возможно сегодня) перестал работать icq бот, рассылающий уведомления. При попытке подключиться вручную на этот уин ругается на превышение лимита подключений. Не знаю как организовано подключение и работа бота в биллинге, но есть подозрения что он слишком часто пытался подключиться с icq серверу за что учетка и была заблокирована.
Соответственно вместо того чтобы выждать какой-то период (час или возможно меньше) бот по прежнему продолжал долбиться на сервер.
В связи с этим может имеет смысл пересмотреть работу icq бота или указать мне на мою ошибку, если таковая имеется.
icq бот
-
- Сообщения: 119
- Зарегистрирован: 2009-10-05 22:29:46
Re: icq бот
Да боту приходиться все время соединяться. В свое время был написан многопоточный сервер, который работал как демон и держал бота все время онлайн, но это решение необходимо было определенным образом настраивать и мы отказались от него. Теперь действительно боту нужно каждый раз переподключаться.
Сейчас сделал задержку если ошибка в 1 час. Думаю хватит.
Сейчас сделал задержку если ошибка в 1 час. Думаю хватит.
Re: icq бот
Ок, спасибо. Уже обновился и получил это обновление.
===
По поводу многопоточности... насколько там все это сложно и насколько оправдано применение первого варианта бота? По сложностям думаю все смогу решить, если качество работы будет выше.
===
Не думали про поддержку jabber ? Данный протокол уже достаточно популярен.
===
По поводу многопоточности... насколько там все это сложно и насколько оправдано применение первого варианта бота? По сложностям думаю все смогу решить, если качество работы будет выше.
===
Не думали про поддержку jabber ? Данный протокол уже достаточно популярен.
-
- Сообщения: 119
- Зарегистрирован: 2009-10-05 22:29:46
Re: icq бот
Обновите систему
Удалите из крона запуск команды cron.sh
INSTALL_PATH - путь где установлена система
DOMAIN - домен системы
cd INSTALL_PATH
sh demon.sh DOMAIN INSTALL_PATH > demon.log &
tail -n 20 -f demon.log
Удалите из крона запуск команды cron.sh
INSTALL_PATH - путь где установлена система
DOMAIN - домен системы
cd INSTALL_PATH
sh demon.sh DOMAIN INSTALL_PATH > demon.log &
tail -n 20 -f demon.log
Re: icq бот
Все получилось. Из недостатков могу отметить непроработанный механизм запуска бота как демона. Пришлось писать скрипт для мониторинга и запуска демона при падении. Так же при работе php в режиме fast-cgi не учитывается пользовательский php.ini. Тоже решилось запуском демона из своего shell файла с указанием недостающих опций.
===
Если решите дорабатывать этот планировщик, то могу помочь информацией и скриптами.
===
Если решите дорабатывать этот планировщик, то могу помочь информацией и скриптами.
-
- Сообщения: 119
- Зарегистрирован: 2009-10-05 22:29:46
Re: icq бот
При работе php в режиме fast-cgi необходимо указание php.ini перед запуском обработчика. Для этого написан простенький wrapper задача которого запускать Cron Daemon.
.demon.sh
Следующая проблема это контроль доступности демона и перезапуск его при падении. Примитивный shell скрипт в системном кроне на нужное вам время.
chk.cron.demon.sh
У меня стоит на раз в 5 минут. Падает за сутки от 1 до 3 раз. Поднимается и продолжает работать на автомате. Так что ничему это не мешает.
Как замечание: главное чтобы в ОС больше не работало ничего по имени demon.sh, иначе будет неверно срабатывать мониторинг. Как вариант решения в 2-х местах где есть 'demon.sh ' в этих же кавычках дописать несколько букв имени вашего домена (то что идет следом в строке запуска демона). Таким образом вычленить pid крон-демона можно будет со 100% вероятностью.
.demon.sh
Код: Выделить всё
#!/bin/sh
cd /HOME/PATH/scripts/billing/;
export PHP_BIN="/usr/local/bin/php-cgi -c /PATH/TO/PHP.INI/php.ini";
/bin/sh demon.sh DOMAIN /HOME/PATH > /HOME/PATH/demon.log
Следующая проблема это контроль доступности демона и перезапуск его при падении. Примитивный shell скрипт в системном кроне на нужное вам время.
chk.cron.demon.sh
Код: Выделить всё
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
ps -auxww > /tmp/ps.tmp.log
pid=`cat /tmp/ps.tmp.log | grep 'demon.sh ' | grep -v grep`
if [ -n "$pid" ]; then
pid=`ps -auxww | grep 'demon.sh ' | grep -v grep | awk '{print $2}'`
# echo "$pid" (--для отладки скрипта--)
else
echo "Cron daemon down"
/PATH/HOME/.demon.sh > /PATH/HOME/demon.log &
fi
У меня стоит на раз в 5 минут. Падает за сутки от 1 до 3 раз. Поднимается и продолжает работать на автомате. Так что ничему это не мешает.
Как замечание: главное чтобы в ОС больше не работало ничего по имени demon.sh, иначе будет неверно срабатывать мониторинг. Как вариант решения в 2-х местах где есть 'demon.sh ' в этих же кавычках дописать несколько букв имени вашего домена (то что идет следом в строке запуска демона). Таким образом вычленить pid крон-демона можно будет со 100% вероятностью.
Вернуться в «Запрос улучшений»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя