Название: Передвинуть время снятия абонплаты Отправлено: Demeo от 27 Февраля 2012, 10:40:38 Доброго времени суток.
Пользуемся суточной абонплатой (снятие месячной равными долями). Снятие происходит в 2-3 часа ночи (видать, как ядро запустили в первый раз, так оно и поехало по этому времени щелкать). И в связи с этим иногда возникают проблемы в виде "пропавших" суток. По сути, в последний день абонплата снимается не за сутки пользования, а за 2-3 часа (причем глубокой ночи, когда нормальные люди спят), а утром обнаруживается сюрприз в виде заблокированного доступа, тогда как абон собирался еще день пользоваться инетом. Думаю, если передвинуть время снятия абонплаты хотя бы на 23 час, то таких проблем будет меньше... Вопрос знатокам - как изменить время снятия суточной абонплаты. И, если возможно, сделать его максимально точным (сейчас разбег по снятию около часа) Название: Re: Передвинуть время снятия абонплаты Отправлено: 0xbad0c0d3 от 27 Февраля 2012, 11:47:15 файл nodeny.pl
Код: 1069 # снятие абонплат после часа ночи т.к. 1-го числа в 0 часов запуск скрипта перехода на новый месяц Название: Re: Передвинуть время снятия абонплаты Отправлено: Demeo от 27 Февраля 2012, 13:07:10 Код: 1070 if( $hour_now>23 && $Tarif_loaded ) Будет снимать после 23? Успеет ли снять всем (~1500 абонов)? Название: Re: Передвинуть время снятия абонплаты Отправлено: 0xbad0c0d3 от 27 Февраля 2012, 13:52:56 Да, будет снимать посде 32. А успеет или нет - все зависит от нагрузок на сам MySQL и на систему в целом. Думаю - успеет.
Название: Re: Передвинуть время снятия абонплаты Отправлено: Efendy от 27 Февраля 2012, 14:02:58 Код: $When_Periodic_service=$t+3600; # периодичность сервисной функции - час Название: Re: Передвинуть время снятия абонплаты Отправлено: Demeo от 27 Февраля 2012, 14:56:37 Спасибо!
Надеюсь 50 минут хватит ;) Название: Re: Передвинуть время снятия абонплаты Отправлено: Demeo от 28 Февраля 2012, 08:42:15 В общем, что-то не то... Снимает все равно после 2 часов ночи. Зато есть одна приятность - на снятие по всем абонам уходит порядка 2 минут.
/usr/local/etc/rc.d/nodeny.sh restart - делал Название: Re: Передвинуть время снятия абонплаты Отправлено: Demeo от 28 Февраля 2012, 12:04:42 Посмотрел код...
Насколько я смог в нем разобраться, там идет проверка, не снималось ли с человека уже бабло. Но бабло УЖЕ снялось в 2 часа ночи, еще до внесения изменений. Поэтому билинг в 23 часа не стал ничего снимать. Это понятно. Но вот почему он ОПЯТЬ в 2 часа с копейками начал снимать абонку, хотя должен был в 23 - непонятно. Поставил пока $hour_now>2 - мож что изменится Название: Re: Передвинуть время снятия абонплаты Отправлено: 0xbad0c0d3 от 28 Февраля 2012, 14:03:35 Снимается в 2-а ночи потому, что &Periodic_service выплняется раз в час, а т.к. стоит проверка, чтоб время было более часа ночи, то 01:00:00 + 1ч == 02:00:00.
Все верно, идет проверка не снималось ли бабло за текущие сутки, но на время выполнения &Periodic_service это никак не влияет. В первый день, после изменений, бабло не снимит, потому что в текущих сутках уже было снятие (в два ночи), а после изменений мы хотим, чтобы снятия проходили в 23, что является теми же сутками, что и 2-а ночи. В след. сутки все нормализуется. Мб. где-то ошибаюсь? Название: Re: Передвинуть время снятия абонплаты Отправлено: Demeo от 28 Февраля 2012, 14:36:55 Я тоже так думал, но потом нарисовалась такая логика: в первый день сняло по-молчанию, в 2 часа. Я поменял на 23, биллинг ничего не снял, потому что уже было снятие - это нормально.
Но на второй день, по идее, не должно было произойти снятие в 2 часа, биллинг должен был ожидать пока не наступит 23 (вот тут кстати, нарисовалась первая моя ошибка - нельзя ставить 23, ибо $hour_now>23 не наступит никогда ;) Т.е. ставить надо $hour_now>22 или $hour_now=23). Может из-за этого, а может из-за чего еще, но биллинг снял по старинке в 2:26. Т.е. опять пойдет проверка, опять выяснится, что снятие УЖЕ было, соответственно после 23 не будет. Это вроде цикл Название: Re: Передвинуть время снятия абонплаты Отправлено: Efendy от 28 Февраля 2012, 17:35:27 /usr/local/etc/rc.d/nodeny.sh restart - делал бок в этом, ядро перезапускается исключительно через веб-админку. Т.е nodeny.pl после редактирования не был перезагружен.Название: Re: Передвинуть время снятия абонплаты Отправлено: Demeo от 28 Февраля 2012, 20:29:10 А вывод насчет того, что $hour_now>23 не наступит никогда - верен?
Название: Re: Передвинуть время снятия абонплаты Отправлено: Efendy от 28 Февраля 2012, 21:21:57 А вывод насчет того, что $hour_now>23 не наступит никогда - верен? да, нужно >22Название: Re: Передвинуть время снятия абонплаты Отправлено: Demeo от 28 Февраля 2012, 21:41:11 Спасибо
Название: Re: Передвинуть время снятия абонплаты Отправлено: 0xbad0c0d3 от 29 Февраля 2012, 00:17:25 А вывод насчет того, что $hour_now>23 не наступит никогда - верен? Верен, если Код: $When_Periodic_service=$t+3600 Название: Re: Передвинуть время снятия абонплаты Отправлено: Efendy от 29 Февраля 2012, 01:40:27 не, >23 часов, это не значит 23 часа и несколько минут, это значит 24 часа, а 24 часа - это 0 :)
Название: Re: Передвинуть время снятия абонплаты Отправлено: Demeo от 29 Февраля 2012, 10:05:00 И все-таки не то пальто... Ранее я писал, что поставил >2, перезапустил ядро в консоли и через веб. Потом поставил >22 и проделал те же манипуляции. Сегодня абонка снялась после 3 часов...
Поставил >3. Наблюдаю... Название: Re: Передвинуть время снятия абонплаты Отправлено: Demeo от 12 Марта 2012, 09:25:09 Во я дебил. Как выяснилось, у меня аж 6 ядер было запущено. Соответственно какое-то из них и не давало сместить время снятия. Ща все норм :)
|