icq бот

Запрос улучшений, интеграции с различными системами и т.д.
serge
Сообщения: 171
Зарегистрирован: 2009-10-06 23:43:37
Откуда: Саратов
Контактная информация:

icq бот

Сообщение serge » 2009-10-26 23:02:19

На днях (возможно сегодня) перестал работать icq бот, рассылающий уведомления. При попытке подключиться вручную на этот уин ругается на превышение лимита подключений. Не знаю как организовано подключение и работа бота в биллинге, но есть подозрения что он слишком часто пытался подключиться с icq серверу за что учетка и была заблокирована.
Соответственно вместо того чтобы выждать какой-то период (час или возможно меньше) бот по прежнему продолжал долбиться на сервер.
В связи с этим может имеет смысл пересмотреть работу icq бота или указать мне на мою ошибку, если таковая имеется.

Бреславский Антон
Сообщения: 119
Зарегистрирован: 2009-10-05 22:29:46

Re: icq бот

Сообщение Бреславский Антон » 2009-10-28 23:28:05

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

Сейчас сделал задержку если ошибка в 1 час. Думаю хватит.

serge
Сообщения: 171
Зарегистрирован: 2009-10-06 23:43:37
Откуда: Саратов
Контактная информация:

Re: icq бот

Сообщение serge » 2009-10-30 11:20:18

Ок, спасибо. Уже обновился и получил это обновление.
===
По поводу многопоточности... насколько там все это сложно и насколько оправдано применение первого варианта бота? По сложностям думаю все смогу решить, если качество работы будет выше.
===
Не думали про поддержку jabber ? Данный протокол уже достаточно популярен.

Бреславский Антон
Сообщения: 119
Зарегистрирован: 2009-10-05 22:29:46

Re: icq бот

Сообщение Бреславский Антон » 2009-11-14 12:10:40

Обновите систему
Удалите из крона запуск команды cron.sh

INSTALL_PATH - путь где установлена система
DOMAIN - домен системы

cd INSTALL_PATH
sh demon.sh DOMAIN INSTALL_PATH > demon.log &

tail -n 20 -f demon.log

serge
Сообщения: 171
Зарегистрирован: 2009-10-06 23:43:37
Откуда: Саратов
Контактная информация:

Re: icq бот

Сообщение serge » 2009-11-15 2:04:33

Все получилось. Из недостатков могу отметить непроработанный механизм запуска бота как демона. Пришлось писать скрипт для мониторинга и запуска демона при падении. Так же при работе php в режиме fast-cgi не учитывается пользовательский php.ini. Тоже решилось запуском демона из своего shell файла с указанием недостающих опций.
===
Если решите дорабатывать этот планировщик, то могу помочь информацией и скриптами.

Бреславский Антон
Сообщения: 119
Зарегистрирован: 2009-10-05 22:29:46

Re: icq бот

Сообщение Бреславский Антон » 2009-11-18 1:17:15

Скидывайте скрипты сюда...вместе адаптируем и напишем на вику статью.

serge
Сообщения: 171
Зарегистрирован: 2009-10-06 23:43:37
Откуда: Саратов
Контактная информация:

Re: icq бот

Сообщение serge » 2009-11-18 23:35:32

При работе php в режиме fast-cgi необходимо указание php.ini перед запуском обработчика. Для этого написан простенький wrapper задача которого запускать Cron Daemon.

.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% вероятностью.


Вернуться в «Запрос улучшений»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей