Jump to content

Снятие денег за дополнительные услуги


Recommended Posts

Кроме стандартных способов оплаты в СТГ мы еще снимаем деньги за доп.услуги

В OnConnect:

/etc/stargazer/sgconf set -s 127.0.0.1 -p 5555 -a admin -w $STGPASS -u $LOGIN -c -$sum:PAY1

 

все вроди-бы нормально, но в некоторый случаях (при перезапуске СТГ, наверное когда активно подключаются пользователи) на некоторых пользователях скрипт останавливается на этой строчке.

если убиваю СТГ и запускаю опять - останавливается на том-же.

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

 

Debian Wheezy x64, firebird2.5, stg-2.408

Link to post
Share on other sites

А можно получить стектрейс на момент зависания?

Собрать в отладочном режиме (build debug), раскидать бинарники вручную (stargazer в /usr/sbin и файлы с расширением .so из modules в /usr/lib/stg). В момент зависания выполнить следующую последовательность действий:

  1. Посмотреть PID Stargazer'а (/var/run/stargazer.pid или через ps).
  2. gdb /usr/sbin/stargazer
  3. (gdb) attach <pid>
  4. (gdb) Ctrl+C
  5. (gdb) thread apply all bt
  6. (gdb) detach
  7. (gdb) quit

Выхлоп после thread apply all bt отправить мне на почту (faust@stg.dp.ua) или прислать ссылку на pastebin.com.

Еще интересно что указано в ExecutersNum в конфиге.

И еще интересно почему деньги за доп. услуги снимаются в OnConnect а не по крону.

 

PS: штатный способ снятия абонплаты за дополнительные услуги в процессе разработки, к стати.

Link to post
Share on other sites

А можно получить стектрейс на момент зависания?

Собрать в отладочном режиме (build debug), раскидать бинарники вручную (stargazer в /usr/sbin и файлы с расширением .so из modules в /usr/lib/stg). В момент зависания выполнить следующую последовательность действий:

  1. Посмотреть PID Stargazer'а (/var/run/stargazer.pid или через ps).
     
  2. gdb /usr/sbin/stargazer
     
  3. (gdb) attach <pid>
     
  4. (gdb) Ctrl+C
     
  5. (gdb) thread apply all bt
     
  6. (gdb) detach
     
  7. (gdb) quit

Выхлоп после thread apply all bt отправить мне на почту (faust@stg.dp.ua) или прислать ссылку на pastebin.com.

Еще интересно что указано в ExecutersNum в конфиге.

И еще интересно почему деньги за доп. услуги снимаются в OnConnect а не по крону.

 

PS: штатный способ снятия абонплаты за дополнительные услуги в процессе разработки, к стати.

ExecutersNum=1

деньги за доп. услуги снимаются в OnConnect - при первом подключении в течении суток, если не пользовался, оплата не снимается

остальное - вечером

Link to post
Share on other sites

Первое что приходит в голову - выставить ExecutersNum в 2 или больше и посмотреть как это повлияет на ситуацию.

Link to post
Share on other sites

Не вижу в первом посте.

Используете только СТГ ?

Или связку СТГ + Ubilling ?

 

Пусть даже Ubilling'а нет, но наведу на мысль как делаем мы.

В Ubilling в доп. поля профиля прописываем услугу (например белый IP или антивирус).

По крону в первых числах месяца запускается скрипт и проходит таких юзеров.

АП снимается с основного счета абонента.

 

ИМХО это интересней, чем делать это в OnConnect по очевидным (для меня) причинам.

Link to post
Share on other sites

Первое что приходит в голову - выставить ExecutersNum в 2 или больше и посмотреть как это повлияет на ситуацию.

не помогает, пробовал

 

В Ubilling в доп. поля профиля прописываем услугу (например белый IP или антивирус).

По крону в первых числах месяца запускается скрипт и проходит таких юзеров.

ИМХО это интересней, чем делать это в OnConnect по очевидным (для меня) причинам.

оплата снимается при ПЕРВОМ в течении суток, если не пользовался, оплата не снимается. (как в мобилках: оплата за хвилину знімається в 1 сек кожної хвилини)

поэтому крон мне не интересен

Link to post
Share on other sites

Между

оплата снимается при ПЕРВОМ в течении суток, если не пользовался, оплата не снимается. (как в мобилках: оплата за хвилину знімається в 1 сек кожної хвилини)

 

и

 

поэтому крон мне не интересен

вобще не вижу никакой взаимосвязи.

 

 

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

Это светит как минимум убиранием тяжелой логики из скриптов инициализации пользователей. На нормальных количествах абонентов это может оказаться очень полезным решением.

Link to post
Share on other sites

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

Это светит как минимум убиранием тяжелой логики из скриптов инициализации пользователей. На нормальных количествах абонентов это может оказаться очень полезным решением.

о, хорошая идея. попробую сделать так.

Спасибо

Link to post
Share on other sites

Эммм... я это вообще-то и имел ввиду...

Убирать проверку из OnConnect.

 

 

В Ubilling в доп. поля профиля прописываем услугу (например белый IP или антивирус).

По крону в первых числах месяца запускается скрипт и проходит таких юзеров.

АП снимается с основного счета абонента.

 

ИМХО это интересней, чем делать это в OnConnect по очевидным (для меня) причинам.

В Ubilling в доп. поля профиля прописываем услугу (например белый IP или антивирус). - или флаг (как говорил nightfly).

По крону в первых числах месяца запускается скрипт и проходит таких юзеров. (ну раз в сутки. Не суть же ... )

Link to post
Share on other sites

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

У меня БД на файлах - было такое похожее.

 

Повторялось до тех пор, пока не сделал через скрипт перегруз(остановку) СТГ.

Link to post
Share on other sites

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

У меня БД на файлах - было такое похожее.

 

Повторялось до тех пор, пока не сделал через скрипт перегруз(остановку) СТГ.

Можно узнать подробности? Особенно зачем понадобилось останавливать Stg?

Link to post
Share on other sites
штатный способ снятия абонплаты за дополнительные услуги в процессе разработки, к стати.

если в разработке - то былобы неплохо сделать выбор периода абонплаты: час, день, месяц. и возможность снятия только в те дни, когда пользовался.

Link to post
Share on other sites
штатный способ снятия абонплаты за дополнительные услуги в процессе разработки, к стати.

если в разработке - то былобы неплохо сделать выбор периода абонплаты: час, день, месяц. и возможность снятия только в те дни, когда пользовался.

А как можно определить пользовался ли абонент доп. услугой если она никак не учитывается в Stargazer? :)

Link to post
Share on other sites

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

У меня БД на файлах - было такое похожее.

 

Повторялось до тех пор, пока не сделал через скрипт перегруз(остановку) СТГ.

Можно узнать подробности? Особенно зачем понадобилось останавливать Stg?

 

Да, разные штатные жизненные ситуации - для чего нужно было останавливать стг. Да и было это уже наверное года 3 назад, толи на 405, толи на 406 версии это было. Повторюсь, все это было, когда я неправильно останавливал стг, типа например kill -9 ..., толи пропадания электроенергии.

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

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

Link to post
Share on other sites

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

У меня БД на файлах - было такое похожее.

 

Повторялось до тех пор, пока не сделал через скрипт перегруз(остановку) СТГ.

Можно узнать подробности? Особенно зачем понадобилось останавливать Stg?

 

Да, разные штатные жизненные ситуации - для чего нужно было останавливать стг. Да и было это уже наверное года 3 назад, толи на 405, толи на 406 версии это было. Повторюсь, все это было, когда я неправильно останавливал стг, типа например kill -9 ..., толи пропадания электроенергии.

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

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

Так в процессе работы все записи юзера правильные, они ж в памяти сидят.

Зависать, к стати, может из-за того что в OnConnect снимаем деньги и у юзера баланс уходит в "минус". При этом Stargazer пытается выполнить OnDisconnect, но Executer занят выполнением текущего OnConnect.

Link to post
Share on other sites

))) Madf, я ж говорил, бились файлы. конкретно - краказябла была внутри файла, причем обычно это был 1 юзер, редко когда 2-3. Решением тогда я точно помню была фича в конфиге - делать резервную версию файла, перед записью файла. Да и давно это было, нету у меня этой проблемы сейчас. ))) Забыли все, ты наверное думаешь, что у меня эта проблема до сих пор есть, ее нету сейчас и уже давно нету.

Я просто предложил, как вариант поиска проблемы у создателя темы. Но забыл, что эта проблема уже решена, если не ошибаюсь с выходом 407 версии (правильно сливаются данные с памяти в БД).

Link to post
Share on other sites

))) Madf, я ж говорил, бились файлы. конкретно - краказябла была внутри файла, причем обычно это был 1 юзер, редко когда 2-3. Решением тогда я точно помню была фича в конфиге - делать резервную версию файла, перед записью файла. Да и давно это было, нету у меня этой проблемы сейчас. ))) Забыли все, ты наверное думаешь, что у меня эта проблема до сих пор есть, ее нету сейчас и уже давно нету.

Я просто предложил, как вариант поиска проблемы у создателя темы. Но забыл, что эта проблема уже решена, если не ошибаюсь с выходом 407 версии (правильно сливаются данные с памяти в БД).

С битым файлом он бы даже не стартонул.

Link to post
Share on other sites

А, я и не говорил, что он у меня стартовал. ))) Да и не важно это, это было давно и нету этой проблемы сейчас, я просто предложил автору, как вариант решения.

Link to post
Share on other sites

А, я и не говорил, что он у меня стартовал. ))) Да и не важно это, это было давно и нету этой проблемы сейчас, я просто предложил автору, как вариант решения.

Не, ну как же так? Топикстартер пишет о зависании OnConnect, ты говоришь что у тебя тоже такое было. Но тут оказывается что Stg даже не стартовал! Как-же что-то могло зависнуть если оно даже и не работало?!

Link to post
Share on other sites
PS: штатный способ снятия абонплаты за дополнительные услуги в процессе разработки, к стати.

Эммм, а это как?

Автомагически :)

Сервисы.

Link to post
Share on other sites
Всегда были. Только не работали.

Поговорим о интеграции? :)

 

Я бы свои инвалидные "Виртуальные сервисы" по дороге деприкейтнул...

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By dummy
      Привет
      для снятия денег за дополнительные услуги в скрипте OnConnect вызываю
      /etc/stargazer/sgconf set -s 127.0.0.1 -p 5555 -a admin -w STGPASS -u $LOGIN -c -$sum
       
      заметил неприятную вещь: после перезапуска СТГ (когда много запросов на подключение) бывают случаи, что sgconf подвисает (помогает только КИЛЛ) и, что самое обидное, больше sgconf не работает (зависает).
      Это, я так понимаю, у него проблемы с многозадачностью ?
      аналогично, когда Stargazer Configurator открывает список абонентов, sgconf - тоже не работает
       
      может есть другие способы снятия денег или изменения других параметров СТГ, чтобы параллельно отрабатывались запросы ?
       
      Спасибо за помощь
×
×
  • Create New...