Необходимо собрать информацию с сайта:
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 и т.д.
Обработал все, вывел страницу с результатами работы по всем компаниям.
Модифицируй скрипт так, чтобы он кусками обрабатывал нужные данные.
Т.е. выбрал ты компании, запустил скрипт и пошли страницы сменяться автоматически.
на первой странице обработал 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