Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вопрос по оптимизации
Форумы портала PHP.SU » » Работа с сетью » Вопрос по оптимизации

Страниц (2): [1] 2 »
 

1. vsll - 09 Мая, 2011 - 18:59:39 - перейти к сообщению
Что быстрее определяет прокси на живучесть (без проверки на анонимность и тд) fsockopen или curl ? Гугл выдал что curl написан на языке более низкого уровня и потому работает быстрее. Но у меня подозрение, что именно в описанном мной случае, всётаки fsockopen быстрее, причём намного...
2. Champion - 09 Мая, 2011 - 19:01:54 - перейти к сообщению
Учитывая, что 99% времени - это ожидание ответа, я думаю, что заморачиваться не стоит и надо пользоватьсч тем, чем удобнее - т.е. скорее всего курлом.
3. movEAX - 09 Мая, 2011 - 19:08:03 - перейти к сообщению
Vasiliya пишет:
Что быстрее определяет прокси на живучесть (без проверки на анонимность и тд) fsockopen или curl ? Гугл выдал что curl написан на языке более низкого уровня и потому работает быстрее. Но у меня подозрение, что именно в описанном мной случае, всётаки fsockopen быстрее, причём намного...

А в чем проблема, взяли бы и затестили) microtime + while или for. Правда стоит учесть, что время ответа от сревера будет скорее всего разным.
По мне, так curl удобней.
4. vsll - 09 Мая, 2011 - 19:08:21 - перейти к сообщению
Champion пишет:
Учитывая, что 99% времени - это ожидание ответа
смотря какая ошибка, если Operation timed out то да, но для прокси более характерна: No route to host или Connection refused, если для fsockopen - это 0, то для curl - это время по полной, я засекала таймом
(Добавление)
movEAX естессно curl удобней - не надо писать лишние велосипеды, благодаря функционалу, может не правильно выражусь сейчас, но чтобы образно понятно было, но я говорю именно о пинге
5. OrmaJever - 09 Мая, 2011 - 19:13:27 - перейти к сообщению
Vasiliya суть не в этом, вот представим что разница между курл и сокетами 1-3 мс, а время ответа от сервера 80-100 мс fsockopen не может продолжить работу без ответа и в любом случае будет ждать эти 80-100 мс. Дак есть смысл заморачиватся из-за 1-3 мс если время будет 100 мс?
6. vsll - 09 Мая, 2011 - 19:22:34 - перейти к сообщению
OrmaJever значит я curl неправильно записала, мне надо чтобы curl в таких случаях (No route to host или Connection refused) сразу прерывало сеанс, когда проверяешь большой список, то большинство прокси плохие
PHP:
скопировать код в буфер обмена
  1. function http_get_contents($proxy) {
  2.                 $ch = curl_init();  
  3.                 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $_POST['timeout']);
  4.                 curl_setopt($ch, CURLOPT_URL, "http://domen.ru/check.php");
  5.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  6.                 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.16) Gecko/20110319");
  7.                 curl_setopt($ch, CURLOPT_PROXY, $proxy);
  8.                 curl_setopt($ch, CURLOPT_TIMEOUT, $_POST['curl_timeout']);
  9.                 $ss=curl_exec($ch);
  10.                 curl_close($ch);
  11.                 return $ss;
  12.         }
7. Мелкий - 09 Мая, 2011 - 20:42:17 - перейти к сообщению
У курла multicurl есть, весьма полезная штука, когда надо обрабатывать несвязанный между собой список адресов. Тогда как fsockopen блокирующий.
8. movEAX - 09 Мая, 2011 - 20:53:37 - перейти к сообщению
Можно так же рассмотреть socket_create..
p.s. не зря ж она существует
9. vsll - 10 Мая, 2011 - 13:02:10 - перейти к сообщению
Мелкий спасибо, теперь мне понятно почему все в экстазе от curl, но в моём случае multi не получиться, так как ip берёться не из списка, а из базы данных, или можно как-то приращение задать не 1, а 10 ? А насчёт fsckopen подозрения оправдались, вот буржуи, тоже примерно так думают http://www[dot]webmasterworld[dot]com/php/4177019[dot]htm
10. EuGen - 10 Мая, 2011 - 13:39:12 - перейти к сообщению
Сначала выберите url из БД, затем делайте запрос.
11. vsll - 10 Мая, 2011 - 13:41:54 - перейти к сообщению
EuGen не, лучше нашла, попробую через multi curl теперь Улыбка
http://php.net/manual/en/control...ctures.while.php
12. EuGen - 10 Мая, 2011 - 13:45:07 - перейти к сообщению
Разумеется я имел ввиду - выбрать url из БД, инициализировать ими curl и выполнить запрос с помощью curl multi.
К чему была ссылка на цикл?
13. vsll - 10 Мая, 2011 - 13:51:10 - перейти к сообщению
EuGen нет url у меня один постоянный, мне нужно адреса прокси представить в виде массива из 5 значений, например,
будет ли multi curl одновременно открывать url с пяти прокси?

про циклы, там в примерах увидела, что 1 приращение цикла while можно представить в виде массива из нескольких значений, полученных внутренним циклом
14. Champion - 10 Мая, 2011 - 13:53:03 - перейти к сообщению
Vasiliya, мне часто кажется, что мы на разных языках с вами говорим)
15. vsll - 10 Мая, 2011 - 13:58:47 - перейти к сообщению
Champion Мне тоже)

 

Powered by ExBB FM 1.0 RC1