За последние 24 часа нас посетили 19337 программистов и 1643 робота. Сейчас ищут 1432 программиста ...

Время ответа прокси

Тема в разделе "Решения, алгоритмы", создана пользователем CozaNostra, 30 июл 2013.

  1. CozaNostra

    CozaNostra Активный пользователь

    С нами с:
    17 мар 2012
    Сообщения:
    25
    Симпатии:
    0
    Адрес:
    Саранск
    Доброго времени суток

    Есть массив
    Код (Text):
    1.  
    2. $array = array(
    3.         '37.28.165.107:3128',
    4.         '91.228.178.138:8081',
    5.         '89.222.212.86:8080',
    6.         '178.208.255.123:3128',
    7.         '192.227.139.227:3128',
    8.         '77.94.48.4:80');
    есть цикл обхода массива и выявление рабочего прокси через сокет

    Код (Text):
    1.  
    2. foreach($array as $proxy)
    3.         {
    4.             $proxy = explode(':',$proxy);
    5.             $fp = fsockopen ($proxy[0], $proxy[1], $errno, $errstr, 1);    
    6.             if($fp){
    7.                                                          $pr = $proxy[0].':'.$proxy[1];break;
    8.                                                      }
    9.         }
    Нужен код чтобы получить время ответа проксика, с целью выявления наиболее быстрого.

    Была идея считать время выполнения итерации, но может можно как то получить время ответа через сокет.
     
  2. CozaNostra

    CozaNostra Активный пользователь

    С нами с:
    17 мар 2012
    Сообщения:
    25
    Симпатии:
    0
    Адрес:
    Саранск
    Прибегнул к решению подсчета время итерации...

    Код (Text):
    1.  
    2. $array = array(
    3.         '37.28.165.107:3128',
    4.         '91.228.178.138:8081',
    5.         '89.222.212.86:8080',
    6.         '178.208.255.123:3128',
    7.         '192.227.139.227:3128',
    8.         '77.94.48.4:80');
    9.        
    10.         foreach($array as $key => $proxy)
    11.         {
    12.             $start_time = microtime();
    13.             $start_array = explode(" ",$start_time);
    14.             $start_time = $start_array[1] + $start_array[0];
    15.             $proxy = explode(':',$proxy);
    16.            
    17.             $fp = @fsockopen ($proxy[0], $proxy[1], $errno, $errstr, 1);
    18.             if(!$fp || $errstr){continue;}
    19.  
    20.             $end_time = microtime();
    21.             $end_array = explode(" ",$end_time);
    22.             $end_time = $end_array[1] + $end_array[0];
    23.             $time = $end_time - $start_time;
    24.             $times[$key] = $time;
    25.         }
    26.  
    27.         asort($times);
    28.        
    29.         foreach($times as $key => $time){$pr = $array[$key];break;}
    30.         echo $pr;
    Если кто то может оптимизировать процесс буду благодарен, так как мне он кажется больно уж жирным...