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 ;  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	 |