![]() |
Показаны 7 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Curl функции - как с быстродействием? (http://netadmin.ws/forum/showthread.php?threadid=9182)
Curl функции - как с быстродействием?
Пришлось мне изобретать лисапед, писать свой маленький яндекс для сайта. Так получилось, что кое-где на сервере есть скрипты, выдающие только Location: с редиректом, т.е. их url не соответствует тому что будет загружено. В рез-те просто file(); чтобы загрузить страницку не получается использовать, нужно дополнять ее CURL, чтобы заполучить HTTP и если он 302 (пока только это рассматриваю), то взять из Header Location новый и загрузить file(); по нему (знаю знаю можно и не вызывать еще раз, а загрузить страницку и через CURL уже открытый, до этого руки не дошли пока что проверить, и суть не в этом).
Ð_то все преамбула, а вот вопрос: почему так медленно работает, может кто знает? :-) Я понимаю, у меня тяжелые страницы, пока из них выдирается http линки (тупо через массив, еще не прикрутил regexp) и слова (regexp-ами) для индексации много времени проходит, но с другой стороны, добавил только
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $page_url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$page_header = curl_exec($ch);
curl_close($ch);
А линков всего 210.
но все это тема другой передачи. Скажите пожалуста, почему так замедлилось от CURL и какие есть еще альтернативы :-)
поэтому так долго. Остается другой вопрос - чем это (получить отдельно заголовок отдельно боди) сделать лучше можно (средствами php конечно, другому не обучены
)
Ни у кого ничего нет сказать?
Взять маленький яндекс с яндекса , он там бесплатно выложен .
P.S. Ненадо нам лисапедов ! Титаника по горло хватило 
__________________
Ковчег построили дилетанты, а профессионаллы построили "Титаник" - не бойтесь спрашивать то , чего вы не знаете , а так же делать то - чего не умеете ! 
Титаник не надо в том то и дело. Надо Ковчег свой... Яндекс не серьезно на большом сайте...
Итак, продолжаем разговор 
С regexp в кач-ве выдиралки href-ов
Script work time: 197 sec
Total URLs: 182
С тупым if($str[$pos] == 'h' && $str[$pos+1] == 'r' && $str[$pos+2] == 'e' итд
Script work time: 273 sec
Total URLs: 184
Линки по разному посчитала, ну это не так важно.
========================================
Теперь если брать за первый заход через CURL только Header, а за второй через file() считывать HTML (линки выдираются через regexp):
Script work time: 250 sec
Total URLs: 182
Что имеем - повторное считывание типа
192.168.0.15 - - [20/Jul/2004:21:15:07 +0400] "HEAD /?p=2&s=0&action=GGF&id=Math HTTP/1.1" 200 0
192.168.0.15 - - [20/Jul/2004:21:15:07 +0400] "GET /?p=2&s=0&action=GGF&id=Math HTTP/1.0" 200 75749
увеличивает время работы на 25%.
Если же повторное считывание производить через CURL,
Script work time: 254 sec
Total URLs: 182
Т.е. с натяжкой можно признать равным (мало ли винамп включил или что еще и вот медленнее страницы генерились).
========================================
Таким образом подводим итог - с быстродействием у CURL все в порядке. Что и хотелось доказать. При использовании CURL что в плюсе - контроль за заголовком, в частности кодами, возможность установить Agent, чтобы в логах прописалось то что надо (для дальнейшего анализа). Минусов не замечено
пока...
Ну и regexp рулят (кто бы сомневался).
Так, где то тут стоял мой лисапед...
ну не знаю ребята
писал я грабер новостей с курлом
пробежка по страницам штук 200-300 за раз
у меньше меньше минуты все выполняется
Ну это у меня проблемы - страницы тяжелые в "собирании" Голый html head body я писал выше как обрабатывается
| Формат времени GMT. Текущее время 12:16. | Показаны 7 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.