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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вопрос по оптимизации

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: fsockopen или curl
vsll
Отправлено: 09 Мая, 2011 - 18:59:39
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




Что быстрее определяет прокси на живучесть (без проверки на анонимность и тд) fsockopen или curl ? Гугл выдал что curl написан на языке более низкого уровня и потому работает быстрее. Но у меня подозрение, что именно в описанном мной случае, всётаки fsockopen быстрее, причём намного...
 
 Top
Champion Супермодератор
Отправлено: 09 Мая, 2011 - 19:01:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Учитывая, что 99% времени - это ожидание ответа, я думаю, что заморачиваться не стоит и надо пользоватьсч тем, чем удобнее - т.е. скорее всего курлом.
 
 Top
movEAX
Отправлено: 09 Мая, 2011 - 19:08:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




Vasiliya пишет:
Что быстрее определяет прокси на живучесть (без проверки на анонимность и тд) fsockopen или curl ? Гугл выдал что curl написан на языке более низкого уровня и потому работает быстрее. Но у меня подозрение, что именно в описанном мной случае, всётаки fsockopen быстрее, причём намного...

А в чем проблема, взяли бы и затестили) microtime + while или for. Правда стоит учесть, что время ответа от сревера будет скорее всего разным.
По мне, так curl удобней.


-----
армия.. самое убогое место
 
 Top
vsll
Отправлено: 09 Мая, 2011 - 19:08:21
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




Champion пишет:
Учитывая, что 99% времени - это ожидание ответа
смотря какая ошибка, если Operation timed out то да, но для прокси более характерна: No route to host или Connection refused, если для fsockopen - это 0, то для curl - это время по полной, я засекала таймом
(Добавление)
movEAX естессно curl удобней - не надо писать лишние велосипеды, благодаря функционалу, может не правильно выражусь сейчас, но чтобы образно понятно было, но я говорю именно о пинге
 
 Top
OrmaJever Модератор
Отправлено: 09 Мая, 2011 - 19:13:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Vasiliya суть не в этом, вот представим что разница между курл и сокетами 1-3 мс, а время ответа от сервера 80-100 мс fsockopen не может продолжить работу без ответа и в любом случае будет ждать эти 80-100 мс. Дак есть смысл заморачиватся из-за 1-3 мс если время будет 100 мс?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vsll
Отправлено: 09 Мая, 2011 - 19:22:34
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




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.         }
 
 Top
Мелкий Супермодератор
Отправлено: 09 Мая, 2011 - 20:42:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




У курла multicurl есть, весьма полезная штука, когда надо обрабатывать несвязанный между собой список адресов. Тогда как fsockopen блокирующий.


-----
PostgreSQL DBA
 
 Top
movEAX
Отправлено: 09 Мая, 2011 - 20:53:37
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 750
Дата рег-ции: Авг. 2009  


Помог: 16 раз(а)




Можно так же рассмотреть socket_create..
p.s. не зря ж она существует


-----
армия.. самое убогое место
 
 Top
vsll
Отправлено: 10 Мая, 2011 - 13:02:10
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




Мелкий спасибо, теперь мне понятно почему все в экстазе от curl, но в моём случае multi не получиться, так как ip берёться не из списка, а из базы данных, или можно как-то приращение задать не 1, а 10 ? А насчёт fsckopen подозрения оправдались, вот буржуи, тоже примерно так думают http://www[dot]webmasterworld[dot]com/php/4177019[dot]htm

(Отредактировано автором: 10 Мая, 2011 - 13:03:18)

 
 Top
EuGen Администратор
Отправлено: 10 Мая, 2011 - 13:39:12
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Сначала выберите url из БД, затем делайте запрос.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 10 Мая, 2011 - 13:41:54
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




EuGen не, лучше нашла, попробую через multi curl теперь Улыбка
http://php.net/manual/en/control...ctures.while.php

(Отредактировано автором: 10 Мая, 2011 - 13:42:31)

 
 Top
EuGen Администратор
Отправлено: 10 Мая, 2011 - 13:45:07
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Разумеется я имел ввиду - выбрать url из БД, инициализировать ими curl и выполнить запрос с помощью curl multi.
К чему была ссылка на цикл?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 10 Мая, 2011 - 13:51:10
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




EuGen нет url у меня один постоянный, мне нужно адреса прокси представить в виде массива из 5 значений, например,
будет ли multi curl одновременно открывать url с пяти прокси?

про циклы, там в примерах увидела, что 1 приращение цикла while можно представить в виде массива из нескольких значений, полученных внутренним циклом
 
 Top
Champion Супермодератор
Отправлено: 10 Мая, 2011 - 13:53:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Vasiliya, мне часто кажется, что мы на разных языках с вами говорим)
 
 Top
vsll
Отправлено: 10 Мая, 2011 - 13:58:47
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




Champion Мне тоже)
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB