PHP.SU

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


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

> Без описания
vsll
Отправлено: 14 Мая, 2011 - 17:38:48
Post Id


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


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


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




Коды ошибок для curl_multi те же что и для curl ? http://curl[dot]haxx[dot]se/libcurl/c/li[dot][dot][dot]curl-errors[dot]html
PHP:
скопировать код в буфер обмена
  1. do {
  2.                         curl_multi_exec($mh, $running);
  3.                         $info = curl_multi_info_read($mh);
  4.                         if (false !== $info) {
  5.                                 echo $info['result']." for ".$info['handle']." ::: ";
  6.                         }


Результат
... 52 for Resource id #35 ::: 0 for Resource id #34 ::: 28 for Resource id #36...

и как желательно по порядку отображать содержимое массива $info или это невозможно, так как порядок будет тот который curl_multi выбрала при начале работы
изначально Resource id #34 - был нулевым значением массива входных данных, а Resource id #35 - первым, и тд
 
 Top
EuGen Администратор
Отправлено: 14 Мая, 2011 - 20:02:33
Post Id


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


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


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




http://ru.php.net/manual/en/func...ti-info-read.php
Порядок будет не
Vasiliya пишет:
порядок будет тот который curl_multi выбрала при начале работы
а тот, в котором Вы добавляли элементы для обработки curl при помощи
http://ru.php.net/manual/en/func...i-add-handle.php


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


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


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


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




Vasiliya пишет:
Коды ошибок для curl_multi те же что и для curl ? http://curl[dot]haxx[dot]se/libcurl/c/li[dot][dot][dot]curl-errors[dot]html

те же
EuGen пишет:
а тот, в котором Вы добавляли элементы для обработки curl

да, спасибо, именно так, просто я сначала делала так:
PHP:
скопировать код в буфер обмена
  1. $res = array();
  2.                 $i = 0;
  3.                 while ($choice = dbarray($all)) {
  4.                         $res[] .= $choice['proxy_good'];
  5.                         $i++;
  6.                 }
  7.                
  8.                 $result = get_contents($res);                  
  9.                 var_dump ($result);

а потом так, и тогда заработало как надо
PHP:
скопировать код в буфер обмена
  1. $res = array();
  2.                 $i = 0;
  3.                 while ($choice = dbarray($all)) {
  4.                         $res[] .= $choice['proxy_good'];
  5.                         $i++;
  6.                 }
  7.                 $res; //вот это добавила)
  8.                 $result = get_contents($res);                  
  9.                 var_dump ($result);

0 for Resource id #34 ::: 52 for Resource id #35 ::: 28 for Resource id #36 ::: 5secondsarray(3) { [0]=> string(18) "91.143.58.1|||||| " [1]=> NULL [2]=> NULL }

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

 
 Top
vsll
Отправлено: 19 Мая, 2011 - 14:15:12
Post Id


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


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


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




Вот геморрой!
EuGen пишет:
Порядок будет не
Vasiliya пишет:
порядок будет тот который curl_multi выбрала при начале работы
а тот, в котором Вы добавляли элементы для обработки curl при помощи

только в том случае, если отображать всю сетку вместе с bool(false), а если с фильтром false !== $info то выдаёт как попало, только id потоков в правильной последовательности...
Ну эт ладно, я чего то не понимаю, если проверять http прокси, то хоть 100 штук одновременно - результат идеальный!!! а если проверять соксы, то если уже 5 штук одновременно, то везде NULL (больше, тоже самое), а если по одному или по два, то соксы определяет нормально...

Получается, что curl_multi с соксами не работает? почему так происходит? или это какие-то настройки на хостинге???
 
 Top
EuGen Администратор
Отправлено: 19 Мая, 2011 - 14:18:52
Post Id


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


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


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




Vasiliya пишет:
а если с фильтром false !== $info то выдаёт как попало, только id потоков в правильной последовательности

На понял, что имеется ввиду. Если id ресурса - то это просто строковое представление, стало быть все ресурсы упорядочиваются верно.
Vasiliya пишет:
а если проверять соксы, то если уже 5 штук одновременно

Зависит от самого SOCKS прокси.


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


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


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


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




CODE (htmlphp):
скопировать код в буфер обмена
  1. На понял, что имеется ввиду

вот маленький кусочек от реультата
CODE (htmlphp):
скопировать код в буфер обмена
  1. bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) array(3) { ["msg"]=> int(1) ["result"]=> int(7) ["handle"]=> resource(38) of type (curl) } 7 for Resource id #38 ::: array(3) { ["msg"]=> int(1) ["result"]=> int(7) ["handle"]=> resource(34) of type (curl) } 7 for Resource id #34 ::: array(3) { ["msg"]=> int(1) ["result"]=> int(7) ["handle"]=> resource(40) of type (curl) } 7 for Resource id #40 ::: array(3) { ["msg"]=> int(1) ["result"]=> int(7) ["handle"]=> resource(41) of type (curl) } 7 for Resource id #41 ::: bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false)


если записать так
PHP:
скопировать код в буфер обмена
  1. do {
  2.                         curl_multi_exec($mh, $running);
  3.                         $sinfo = curl_multi_info_read($mh);
  4.                         var_dump ($sinfo);
  5.                         if (false !== $sinfo) {
  6.                                 echo $sinfo['result']." for ".$sinfo['handle']." ::: ";
  7.                         }
  8.                 } while($running > 0);

(Добавление)
EuGen пишет:
Зависит от самого SOCKS прокси

Ну значит я правильно поняла, что curl_multi не подходит для проверки соксов, вернее проверять можно, но не более двух одновременно, чтобы результат был корректным или нужно параметры как-то по-хитрому записать:
PHP:
скопировать код в буфер обмена
  1. function socks_get_contents($proxy) {
  2.                 $socks = array();
  3.                 $sout = array();
  4.                 $mh = curl_multi_init();
  5.                 foreach ($proxy as $i => $sp) {
  6.                         $socks[$i]=curl_init();
  7.                                                
  8.                         curl_setopt($socks[$i], CURLOPT_CONNECTTIMEOUT, 5);
  9.                         curl_setopt($socks[$i], CURLOPT_URL, "http://www.domen.ru/check.php");
  10.                         curl_setopt($socks[$i], CURLOPT_RETURNTRANSFER, 1);
  11.                         curl_setopt($socks[$i], CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.16) Gecko/20110319");
  12.                         curl_setopt($socks[$i], CURLOPT_TIMEOUT, $_POST['curl_timeout']);
  13.                         curl_setopt($socks[$i], CURLOPT_PROXY, $sp);
  14.                         curl_setopt($socks[$i], CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
  15.                        
  16.                         curl_multi_add_handle ($mh,$socks[$i]);
  17.                 }

(Отредактировано автором: 19 Мая, 2011 - 14:28:30)

 
 Top
EuGen Администратор
Отправлено: 19 Мая, 2011 - 14:30:31
Post Id


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


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


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




Vasiliya пишет:
но не более двух одновременно

Это еще почему.
Насчет false - массив отфильтровать не пробовали? Я не очень представляю просто его назначение у Вас.


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


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


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


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




EuGen пишет:
Насчет false - массив отфильтровать не пробовали?
это я специально для вас сделала (var_dump ($sinfo);) а так у меня всё выводится в человекопонятном виде
PHP:
скопировать код в буфер обмена
  1. if (false !== $sinfo) {
  2.                                 echo $sinfo['result']." for ".$sinfo['handle']." ::: ";
  3.                         }
Вот он фильтр - if (false !== $sinfo)
Что мне с соксами делать, не проверяет корректно большое количество, хоть лбом об клавиатуру бейся !!! Даже таймаут 10 ставила!
 
 Top
EuGen Администратор
Отправлено: 19 Мая, 2011 - 14:38:48
Post Id


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


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


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




Vasiliya пишет:
if (false !== $sinfo)

И что, это как-то нарушает порядок?
по поводу socks:
http://bugs.php.net/bug.php?id=39503
- не Ваш случай? Попробуйте на версии 5.3


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


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


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


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




EuGen пишет:
И что, это как-то нарушает порядок?
да, зато вид человекопонятный, больше ошибки никак не вывести в curl_multi, ни через curl_multi_add_handle, ни через curl_multi_exec, только curl_multi_info_read может у них считывать, а curl_multi_strerror - ерунда, только CURLMcode (8 ошибок)
(Добавление)
EuGen пишет:
http://bugs.php.net/bug.php?id=39503
- не Ваш случай? Попробуйте на версии 5.3

на хостинге
CODE (htmlphp):
скопировать код в буфер обмена
  1.        
  2. 5.2.9
  3. libcurl/7.19.5

она уже работает, но не больше двух - трёх, спасибо EuGen за ссылку вы мне очень помогли, как всегда
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Работа с сетью »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB