[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Оцените скрипт,пожалуйста
Nicholas
Здравствуйте.Возникла такая задача:
Необходимо собрать информацию с сайта:

http://www.cmsmagazine.ru/creators/?sht=li...F3&cpp=100&pn=1

На вышеуказанной странице находится список компаний.Из этого списка необходимо взять название компании,перейти по ссылке и собрать подробную информацию о компании(сайт и,используемые CMS).Результат работы записать в файл.
В скрипте используется библиотека Simple_HTML_DOM

Скрипт:

<? require_once 'simple_html_dom.php';
set_time_limit(300);
//Функция предназначена для сбора информации о конкретной компании и последующей записи результатов в файл.
//$studio_adres - url адрес студии $studio_name - название студии. Эти данные полючаются в результате работы цикла(см.ниже)

function studio_info($studio_adres,$studio_name)
{
$url=$studio_adres;
$file_name='info.txt';
$descriptor=fopen($file_name,'at');//дескриптор открытого файла
if ($descriptor)
{
$data=file_get_html($url);
//Поиск названия сайта компании или фрилансера
$site=$data->find('td.mainInset a.red b',0);
$site_adres=$site->plaintext . ';';
fwrite($descriptor,"\r");
fwrite($descriptor,$studio_name);
fwrite($descriptor,$site_adres);

//Поиск CMS
foreach($data->find('td.mainInset small.gray a.red' )as $CMS)
{
$CMS_name=$CMS->plaintext . ';';
fwrite($descriptor,$CMS_name);
}
fclose($descriptor);
$data->clear();
unset($data);

}
else
{
echo"Can not open file";
}
return 0;
}
//Цикл для обхода страниц со списком компаний или студий.
$size=7; //Сколько страниц нужно обойти
for($i=2;$i<=$size;$i++)
{
$main_url='http://www.cmsmagazine.ru/creators/?sht=list&sk=sum_tcy_works&so=desc&c=& cc=&ctl=&cms=&pan=%EF%EE%E8%F1%EA+%EF%EE+%ED%E0%E7%E2%E0%ED%E8%FE+%E8%EB%E8+%F1%E0%E9%F2%F3&cpp=100&pn='.$i;
$main_html=file_get_html($main_url);
foreach($main_html->find('td.name a')as $company_list)
{
$company_name=$company_list->plaintext . ';';
$company_adres=$company_list->href;
studio_info($company_adres,$company_name);
}
$main_html->clear();
unset($main_html);
}
?>

Проблема в том,что за 300 сек. скрипт успевает обходить только 100 компаний,а их 700.
Подскажите,как можно ускорить работу?
Заранее спасибо.



Спустя 15 минут, 25 секунд (20.03.2012 - 17:14) m4a1fox написал(а):
Ну дык поставь

set_time_limit(2100);

Спустя 29 минут, 58 секунд (20.03.2012 - 17:44) Nicholas написал(а):
)))Я понимаю.Но хотелось бы узнать как можно модифицировать скрипт,что бы за 300 сек он обходил больше страниц.

Спустя 9 минут, 18 секунд (20.03.2012 - 17:53) Visman написал(а):
Nicholas
Модифицируй скрипт так, чтобы он кусками обрабатывал нужные данные.
Т.е. выбрал ты компании, запустил скрипт и пошли страницы сменяться автоматически.
на первой странице обработал 20 компаний, на второй еще 20 и т.д.
Обработал все, вывел страницу с результатами работы по всем компаниям.

Спустя 17 минут, 58 секунд (20.03.2012 - 18:11) Nikitian написал(а):
Цитата (Nicholas @ 20.03.2012 - 17:44)
)))Я понимаю.Но хотелось бы узнать как можно модифицировать скрипт,что бы за 300 сек он обходил больше страниц.

Использовать multicurl, тем самым распараллелить самую долгую операцию - загрузку данных.

Спустя 54 минуты, 20 секунд (20.03.2012 - 19:06) Игорь_Vasinsky написал(а):
Цитата
Но хотелось бы узнать как можно модифицировать скрипт,что бы за 300 сек он обходил больше страниц

мультикурл+regxp
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.