Биллинговая система Nodeny
27 Ноября 2024, 01:06:36 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2
  Печать  
Автор Тема: Передвинуть время снятия абонплаты  (Прочитано 9100 раз)
Demeo
NoDeny
Постоялец
*

Карма: 6
Offline Offline

Сообщений: 204


Просмотр профиля Email
« : 27 Февраля 2012, 10:40:38 »

Доброго времени суток.

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

Вопрос знатокам - как изменить время снятия суточной абонплаты. И, если возможно, сделать его максимально точным (сейчас разбег по снятию около часа)
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #1 : 27 Февраля 2012, 11:47:15 »

файл nodeny.pl
Код:
1069   # снятие абонплат после часа ночи т.к. 1-го числа в 0 часов запуск скрипта перехода на новый месяц
1070   if( $hour_now>1 && $Tarif_loaded )
1071   {
1072      $V && &debug("=== Суточные абонплаты ===");
в строке 1070 и есть время снятия, сейчас это после часа ночи. Вот тут с условием и нужно "играть"
Записан
Demeo
NoDeny
Постоялец
*

Карма: 6
Offline Offline

Сообщений: 204


Просмотр профиля Email
« Ответ #2 : 27 Февраля 2012, 13:07:10 »

Код:
1070   if( $hour_now>23 && $Tarif_loaded )

Будет снимать после 23? Успеет ли снять всем (~1500 абонов)?
« Последнее редактирование: 27 Февраля 2012, 13:10:21 от Demeo » Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #3 : 27 Февраля 2012, 13:52:56 »

Да, будет снимать посде 32. А успеет или нет - все зависит от нагрузок на сам MySQL и на систему в целом. Думаю - успеет.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #4 : 27 Февраля 2012, 14:02:58 »

Код:
$When_Periodic_service=$t+3600; # периодичность сервисной функции - час
на всякий случай уменьшить на несколько минут, а то может случиться ситуация, когда последний запуск будет в 22:59:59, а  следующий уже в следующем дне
Записан
Demeo
NoDeny
Постоялец
*

Карма: 6
Offline Offline

Сообщений: 204


Просмотр профиля Email
« Ответ #5 : 27 Февраля 2012, 14:56:37 »

Спасибо!
Надеюсь 50 минут хватит Подмигивающий
Записан
Demeo
NoDeny
Постоялец
*

Карма: 6
Offline Offline

Сообщений: 204


Просмотр профиля Email
« Ответ #6 : 28 Февраля 2012, 08:42:15 »

В общем, что-то не то... Снимает все равно после 2 часов ночи. Зато есть одна приятность - на снятие по всем абонам уходит порядка 2 минут.

/usr/local/etc/rc.d/nodeny.sh restart - делал
Записан
Demeo
NoDeny
Постоялец
*

Карма: 6
Offline Offline

Сообщений: 204


Просмотр профиля Email
« Ответ #7 : 28 Февраля 2012, 12:04:42 »

Посмотрел код...

Насколько я смог в нем разобраться, там идет проверка, не снималось ли с человека уже бабло. Но бабло УЖЕ снялось в 2 часа ночи, еще до внесения изменений. Поэтому билинг в 23 часа не стал ничего снимать. Это понятно. Но вот почему он ОПЯТЬ в 2 часа с копейками начал снимать абонку, хотя должен был в 23 - непонятно.

Поставил пока $hour_now>2 - мож что изменится
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #8 : 28 Февраля 2012, 14:03:35 »

Снимается в 2-а ночи потому, что &Periodic_service выплняется раз в час, а т.к. стоит проверка, чтоб время было более часа ночи, то 01:00:00 + 1ч == 02:00:00.
Все верно, идет проверка не снималось ли бабло за текущие сутки, но на время выполнения &Periodic_service это никак не влияет. В первый день, после изменений, бабло не снимит, потому что в текущих сутках уже было снятие (в два ночи), а после изменений мы хотим, чтобы снятия проходили в 23, что является теми же сутками, что и 2-а ночи. В след. сутки все нормализуется. Мб. где-то ошибаюсь?
Записан
Demeo
NoDeny
Постоялец
*

Карма: 6
Offline Offline

Сообщений: 204


Просмотр профиля Email
« Ответ #9 : 28 Февраля 2012, 14:36:55 »

Я тоже так думал, но потом нарисовалась такая логика: в первый день сняло по-молчанию, в 2 часа. Я поменял на 23, биллинг ничего не снял, потому что уже было снятие - это нормально.

Но на второй день, по идее, не должно было произойти снятие в 2 часа, биллинг должен был ожидать пока не наступит 23 (вот тут кстати, нарисовалась первая моя ошибка - нельзя ставить 23, ибо $hour_now>23 не наступит никогда  Подмигивающий Т.е. ставить надо $hour_now>22 или $hour_now=23). Может из-за этого, а может из-за чего еще, но биллинг снял по старинке в 2:26. Т.е. опять пойдет проверка, опять выяснится, что снятие УЖЕ было, соответственно после 23 не будет. Это вроде цикл
« Последнее редактирование: 28 Февраля 2012, 14:39:54 от Demeo » Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #10 : 28 Февраля 2012, 17:35:27 »

/usr/local/etc/rc.d/nodeny.sh restart - делал
бок в этом, ядро перезапускается исключительно через веб-админку. Т.е nodeny.pl после редактирования не был перезагружен.
Записан
Demeo
NoDeny
Постоялец
*

Карма: 6
Offline Offline

Сообщений: 204


Просмотр профиля Email
« Ответ #11 : 28 Февраля 2012, 20:29:10 »

А вывод насчет того, что $hour_now>23 не наступит никогда - верен?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #12 : 28 Февраля 2012, 21:21:57 »

А вывод насчет того, что $hour_now>23 не наступит никогда - верен?
да, нужно >22
Записан
Demeo
NoDeny
Постоялец
*

Карма: 6
Offline Offline

Сообщений: 204


Просмотр профиля Email
« Ответ #13 : 28 Февраля 2012, 21:41:11 »

Спасибо
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #14 : 29 Февраля 2012, 00:17:25 »

А вывод насчет того, что $hour_now>23 не наступит никогда - верен?
Верен, если
Код:
$When_Periodic_service=$t+3600
;
Записан
Страниц: [1] 2
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!