Смена ТП по расписанию не работает

Ответить
chtito2
Сообщения: 479
Зарегистрирован: Чт апр 17, 2008 5:26 pm

Смена ТП по расписанию не работает

Сообщение chtito2 »

В модуле Dv смена тарифного плана по расписанию не работает: смены не происходит, а сумма с депозита юзера списывается по цене текущего ТП. Кто сталкивался? Модуль Abon не включен, да и он по моему здесь ни при чем?
who | grep -i blonde | date; cd $HOME; unzip; touch; strip; finger; mount; fsck; more; yes; uptime; umount; sleep 69

chtito2
Сообщения: 479
Зарегистрирован: Чт апр 17, 2008 5:26 pm

Сообщение chtito2 »

Разобрался: смена почему-то в periodic daily происходила.
who | grep -i blonde | date; cd $HOME; unzip; touch; strip; finger; mount; fsck; more; yes; uptime; umount; sleep 69

NiTr0
Сообщения: 767
Зарегистрирован: Пт фев 08, 2008 4:46 pm

Сообщение NiTr0 »

Она там всегда и происходила.
А вот списывание деег было раньше так сказать по факту смены, тоже в периодик. Как сейчас - ХЗ.

chtito2
Сообщения: 479
Зарегистрирован: Чт апр 17, 2008 5:26 pm

Сообщение chtito2 »

А вот списывание деег было раньше так сказать по факту смены, тоже в периодик. Как сейчас - ХЗ.
У меня periodic daily вызывалась после periodic monthly поэтому некорректно работало. Автор предлагает daily запускать до monthly:
1 0 * * * root /usr/abills/libexec/periodic daily
1 1 * * * root /usr/abills/libexec/periodic monthly
но тогда получается, что юзеру меняется план, а деньги снимаются только спустя какое-то время (во время periodic monthly). Обычно хочется чтобы деньги снялись в одно время со сменой плана. Вот как я этого добился:

закомментировал строчку вызова sheduler из libexec/periodic, которая вызывалась при daily, и перенес вызов в Abills/modules/Dv/config
%PERIODIC = (daily => [ 'dv_daily_fees', 'dv_users_warning_messages' ],
monthly => [ 'sheduler', 'dv_monthly_fees', 'dv_periodic_logrotate', ],
report => [ 'dv_report' ]);
sheduler() уже сама вызывает dv_sheduler() из Abills/modules/Dv/webinterface, которая и меняет план, а снятие абонплаты и перенос даты активации на сегодняшний день происходит в dv_monthly_fees, поэтому важно, чтобы sheduler шла ДО dv_monthly_fees, как выше, а не ПОСЛЕ, как было до этого. Еще одно необходимое изменение: по какой-то известной только автору причине monthly функции вызываются в обратном порядке их перечисления. Маленькое изменение в libexec/periodic:
if (defined($args->{monthly})) {
#for(my $i=$#monthly_functions; $i>-1; $i--) {
for(my $i=0; $i < @monthly_functions; $i++) {
т.е. убираем закомментированную строку и пишем вместо нее следующую.
Теперь все работает.
who | grep -i blonde | date; cd $HOME; unzip; touch; strip; finger; mount; fsck; more; yes; uptime; umount; sleep 69

ran
Сообщения: 2298
Зарегистрирован: Вс окт 21, 2007 2:29 pm

Сообщение ran »

chtito2 писал(а):who | grep -i blonde | date; cd $HOME; unzip; touch; strip; finger; mount; fsck; more; yes; uptime; umount; sleep
после слип цифирю забыл поставить - не проснёшься :D

chtito2
Сообщения: 479
Зарегистрирован: Чт апр 17, 2008 5:26 pm

Сообщение chtito2 »

Вы правы: sleep 69
А почему 69 - так валетиком же спим :D :D
who | grep -i blonde | date; cd $HOME; unzip; touch; strip; finger; mount; fsck; more; yes; uptime; umount; sleep 69

Ответить