Закачка страниц

A
На сайте с 26.04.2008
Offline
2
322

Вопрос простой:

Нужно сосканировать поуровнево все имеющиеся страницы сайта, например загрузили все с главной, потом все ссылки с этих и т.д.

Имея URL получаем контент кодом:

           $fp = fsockopen("имя_сайта", 80);

fputs($fp, "GET /страница_сайта HTTP/1.1\r\n");
fputs($fp, "Host: имя_сайта\r\n");
fputs($fp, "Connection: close\r\n");
fputs($fp, "\r\n");
while (!feof($fp)){
@$headers .= fgets($fp);
}

Сканируем все полученные URL поочередно:

           $fp = fsockopen("имя_сайта", 80);

fputs($fp, "HEAD /страница_сайта HTTP/1.1\r\n");
fputs($fp, "Host: имя_сайта\r\n");
fputs($fp, "Connection: close\r\n");
fputs($fp, "\r\n");
while (!feof($fp)){
@$headers .= fgets($fp, 1000);
}

Далее по полученным заголовкам проверяем "подлинность" страницы (сам процесс не важен)

Вопрос: При таком сканировании большого количества страниц по-моему большая нагрузка на сервер. Меня интересует с физической стороны - как минимизировать нагрузку, сделать тайм-аут небольшой между получениями данных или как? Возможно код кривой?

peterpro
На сайте с 14.11.2007
Offline
35
#1

Вставляете sleep($i); между итерациями, где $i - секунды. Если надо в миллисекундах - то это usleep ($msec);

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий