| 
							samlab
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 «  : 26-02-2010 20:19 »   | 
								
								 | 
							  
							 
							Используя треды в парсинге, делаю так threads->new(\&pars) for 1 .. 10;
  $_->join for threads->list;
  sub main { # тут запрос {
  Проблема в том, что запрос осуществляется в 10 потоков одновременно. Т.е., скрипт выдачи сервера считает, что сайт банально ддосят... Есть ли какой нибудь способ реализации очереди??? Заранее спасибо откликнувшимся...  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #1 : 26-02-2010 21:09 »   | 
								
								 | 
							  
							 
							samlab, очередь - это уже последовательная обработка.   Короче, меняй логику: один поток для запросов и N потоков для обработки. С другой стороны, если обработка занимает десятые доли секунды и меньше, то уже не имеет смысла использовать потоки.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							samlab
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #2 : 26-02-2010 21:23 »   | 
								
								 | 
							  
							 
							samlab, очередь - это уже последовательная обработка.   Короче, меняй логику: один поток для запросов и N потоков для обработки. С другой стороны, если обработка занимает десятые доли секунды и меньше, то уже не имеет смысла использовать потоки.  Обработка действительно занимает доли секунд, как же тогда быть?  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #3 : 26-02-2010 21:29 »   | 
								
								 | 
							  
							 
							Не использовать потоки. Сделай все последовательно в одном цикле. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							samlab
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #4 : 26-02-2010 21:32 »   | 
								
								 | 
							  
							 
							Тогда, весь процесс будет слишком долгим... А что вы можете сказать про Thread::Queue ? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #5 : 26-02-2010 21:45 »   | 
								
								 | 
							  
							 
							Или тебя забанят за DoS...
 
  У тебя главная проблема в том, что ты не должен делать много одновременных запросов на сервер. В идеале - один одновременный запрос. Т.е. экономить время можно только на обработке данных: класть задания в очередь, а 1-2 потока будут забирать их и обрабатывать (не забудь про синхронизацию!). Если время запроса, скажем, секунда, а время обработки - 0.1 секунды, то такая схема даст всего лишь 1/11 экономии. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							samlab
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #6 : 27-02-2010 11:40 »   | 
								
								 | 
							  
							 
							Понятно, спасибо   Добавлено через 8 часов, 39 минут и 46 секунд:   Вот, хотел еще узнать, каким образом очищать буфер в перле, чтобы данные, пришедшие с сервера его не забивали?  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 27-02-2010 20:19 от samlab »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #7 : 28-02-2010 09:07 »   | 
								
								 | 
							  
							 
							Какой буфер? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							samlab
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #8 : 01-03-2010 10:09 »   | 
								
								 | 
							  
							 
							Когда данные выводятся на печать, а скрипт запущен в кроне    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #9 : 01-03-2010 14:17 »   | 
								
								 | 
							  
							 
							samlab, я ничего не понимаю из того, что ты говоришь. Может мне надо выспаться, но все же попрошу изъясняться понятнее. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							samlab
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #10 : 01-03-2010 19:04 »   | 
								
								 | 
							  
							 
							Я вот это имел ввиду, прошу прощения за свою корявую речь   http://computerlibrary.info/view/article133/В частности,  Perl имеет неприятное свойство накапливать данные в буфере, но нам нужно будет их немедленно сбрасывать, для чего и применяется указанный метод.Или это имеет место только при работе с сокетами? Парс делаю с помощью LWP, говорят, что так намного медленнее, чем с помощью сокетов... проясните ситуацию, пож...    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 01-03-2010 19:07 от samlab »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							McZim
							
						 | 
						
							
								  | 
								
									
									 « Ответ #11 : 01-03-2010 19:28 »   | 
								
								 | 
							  
							 
							Когда данные выводятся на печать, а скрипт запущен в кроне   а причем тут печать и буфер в приведенной статье?  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							The CBO without stats is like a morning without coffee. (c) T.Kyte. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							samlab
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #12 : 01-03-2010 19:38 »   | 
								
								 | 
							  
							 
							Притом, что я имел ввиду этот буфер, а с печатью, наверное, просто некорректно выразился    
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #13 : 01-03-2010 19:38 »   | 
								
								 | 
							  
							 
							samlab, приведенная ссылка ясности не добавила. Разбираться в килобайтах непонятного текста? Зачем?! У нас же есть Хрустальный шар! Точнее бы...   Если ты про буферизацию вывода, то это лечится так: Всевозможные буферы на ввод не влияют. Фигня насчет медленнее. Для современных PC процессорное время почти ничего не стоит, а вот сети и загрузка сервера — они обычно вносят наибольшую задержку.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							samlab
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #14 : 04-03-2010 19:30 »   | 
								
								 | 
							  
							 
							   Спасибо, все понял...  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							nagual
							
								Новенький 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #15 : 09-07-2010 10:16 »   | 
								
								 | 
							  
							 
							Для того чтоб серв не думал что его ддосят нужно одить с кучи ипов через прокси ... или прикинуться гуглеботом .... Кстати у тредов утечка памяти ... как с ней бороться кто то знает ? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #16 : 09-07-2010 12:10 »   | 
								
								 | 
							  
							 
							nagual, откуда такая информация про утечку? Просто так - для красного словца? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							samlab
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									«  Ответ #17 : 12-07-2010 13:36 »    | 
								
								 | 
							  
							 
							
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	 |