Demeo
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 204
|
|
« : 27 Февраля 2012, 10:40:38 » |
|
Доброго времени суток.
Пользуемся суточной абонплатой (снятие месячной равными долями). Снятие происходит в 2-3 часа ночи (видать, как ядро запустили в первый раз, так оно и поехало по этому времени щелкать). И в связи с этим иногда возникают проблемы в виде "пропавших" суток. По сути, в последний день абонплата снимается не за сутки пользования, а за 2-3 часа (причем глубокой ночи, когда нормальные люди спят), а утром обнаруживается сюрприз в виде заблокированного доступа, тогда как абон собирался еще день пользоваться инетом. Думаю, если передвинуть время снятия абонплаты хотя бы на 23 час, то таких проблем будет меньше...
Вопрос знатокам - как изменить время снятия суточной абонплаты. И, если возможно, сделать его максимально точным (сейчас разбег по снятию около часа)
|
|
|
Записан
|
|
|
|
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
Карма: 116
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
Сообщений: 204
|
|
« Ответ #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
Сообщений: 1059
|
|
« Ответ #3 : 27 Февраля 2012, 13:52:56 » |
|
Да, будет снимать посде 32. А успеет или нет - все зависит от нагрузок на сам MySQL и на систему в целом. Думаю - успеет.
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #4 : 27 Февраля 2012, 14:02:58 » |
|
$When_Periodic_service=$t+3600; # периодичность сервисной функции - час на всякий случай уменьшить на несколько минут, а то может случиться ситуация, когда последний запуск будет в 22:59:59, а следующий уже в следующем дне
|
|
|
Записан
|
|
|
|
Demeo
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 204
|
|
« Ответ #5 : 27 Февраля 2012, 14:56:37 » |
|
Спасибо! Надеюсь 50 минут хватит
|
|
|
Записан
|
|
|
|
Demeo
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 204
|
|
« Ответ #6 : 28 Февраля 2012, 08:42:15 » |
|
В общем, что-то не то... Снимает все равно после 2 часов ночи. Зато есть одна приятность - на снятие по всем абонам уходит порядка 2 минут.
/usr/local/etc/rc.d/nodeny.sh restart - делал
|
|
|
Записан
|
|
|
|
Demeo
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 204
|
|
« Ответ #7 : 28 Февраля 2012, 12:04:42 » |
|
Посмотрел код...
Насколько я смог в нем разобраться, там идет проверка, не снималось ли с человека уже бабло. Но бабло УЖЕ снялось в 2 часа ночи, еще до внесения изменений. Поэтому билинг в 23 часа не стал ничего снимать. Это понятно. Но вот почему он ОПЯТЬ в 2 часа с копейками начал снимать абонку, хотя должен был в 23 - непонятно.
Поставил пока $hour_now>2 - мож что изменится
|
|
|
Записан
|
|
|
|
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
Карма: 116
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
Сообщений: 204
|
|
« Ответ #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
|
|
« Ответ #10 : 28 Февраля 2012, 17:35:27 » |
|
/usr/local/etc/rc.d/nodeny.sh restart - делал
бок в этом, ядро перезапускается исключительно через веб-админку. Т.е nodeny.pl после редактирования не был перезагружен.
|
|
|
Записан
|
|
|
|
Demeo
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 204
|
|
« Ответ #11 : 28 Февраля 2012, 20:29:10 » |
|
А вывод насчет того, что $hour_now>23 не наступит никогда - верен?
|
|
|
Записан
|
|
|
|
Efendy
|
|
« Ответ #12 : 28 Февраля 2012, 21:21:57 » |
|
А вывод насчет того, что $hour_now>23 не наступит никогда - верен?
да, нужно >22
|
|
|
Записан
|
|
|
|
Demeo
NoDeny
Постоялец
Карма: 6
Offline
Сообщений: 204
|
|
« Ответ #13 : 28 Февраля 2012, 21:41:11 » |
|
Спасибо
|
|
|
Записан
|
|
|
|
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
Карма: 116
Offline
Сообщений: 1059
|
|
« Ответ #14 : 29 Февраля 2012, 00:17:25 » |
|
А вывод насчет того, что $hour_now>23 не наступит никогда - верен?
Верен, если $When_Periodic_service=$t+3600 ;
|
|
|
Записан
|
|
|
|
|