о скорости работы curl с сетью

Discussion in 'PHP' started by Дикс, 21 Jul 2010.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    Вот казалось бы простой способ измерить скорость скачивания страниц курлом в пхп:

    PHP:
    <pre><?php

    $h 
    curl_init('http://kidsevents.com');

    curl_setopt($hCURLOPT_RETURNTRANSFER1);
    curl_setopt($hCURLOPT_FOLLOWLOCATION1);

    $return curl_exec($h);


    $info curl_getinfo($h);

    print_r($info);

    echo 
    'download speed: ' round($info['speed_download']/10243) . ' kb/s<br />';
    echo 
    'page size: ' round($info['size_download']/10243) . ' kb';
    Но почему тогда скорость работы скрипта обычно

    скорость: 84 kb/s
    пиковая: 102 kb/s

    при том что к примеру торренты у меня качаются до 600 kb/s и инет дома 4 мб adsl (правда порой некоторые фильмы качаются со скоростью 50 kb/s)

    означает ли это, что торренты качаются с некой многопоточностью, и потому в уторренте отображаются такие цифры, либо пхп работает неоправданно медленно?
     
  2. Catbert

    Catbert Banned

    Joined:
    29 Jun 2010
    Messages:
    80
    Likes Received:
    27
    Reputations:
    10
    А ты уверен, что данный сайт в состоянии отдавать содержимое с такой скоростью?
    И торрент-клиенты обычно не сразу выходят на пиковую скорость, на каком объеме данных скорость замеряем?
     
  3. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    это практически со всеми сайтами, в том числе с очень крупными, которые очевидно должны работать максимально быстро

    относительно торрентов речь идет о фильмах от 700 мб
    а курл качает странички 30-50 кб

    вообще, почему даже на хорошем инете страницы не грузятся моментально?
    ладно ещё сидел на модеме и смотрел пару минут как она вытягивается, но почему на 4мб/с тоже приходится ждать? куда уходит вся скорость? (при том что торренты выключены и ничего вообще не закачивается и не качается)
     
  4. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Скорость надо проверять на достаточно больших файлах и на быстрых протоколах. Могу посоветовать скачать с ФТП оперы что нибудь. Например 12 метров (у меня в среднем 1.5 МБ/c): ftp://ftp.opera.com/pub/opera/win/1050b2/int/Opera_1050_int_b2_Setup.exe
     
    _________________________
    #4 Gifts, 21 Jul 2010
    Last edited: 21 Jul 2010
  5. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
     
  6. roxblnfk

    roxblnfk Elder - Старейшина

    Joined:
    6 Feb 2010
    Messages:
    189
    Likes Received:
    42
    Reputations:
    19
    как это где? а как же заголовки HTTP протокола? время на обработку заголовков? время соединения?

    весит ли страница 4 кб или 20 мб - заголовки на оба варианта будут примерно одинаковы (~1кб), но в первом случае размер увеличивается на четверть а во втором почти не меняется, отсюда 4 кб передаётся по времени как 5 кб, а 20 мб как ~20.001 мб :) это ещё без учёта других аналогичных факторов
     
  7. IGL

    IGL New Member

    Joined:
    16 Nov 2007
    Messages:
    41
    Likes Received:
    0
    Reputations:
    0

    держи у мну так и норм робит файл сохраняет как нада

    PHP:
     <pre><?php 
    include("img/config.inc.php"); 
    $h curl_init($_POST['adres']); 
    curl_setopt($hCURLOPT_RETURNTRANSFER1); 
    $return curl_exec($h);


    $file fopen("files/".$_POST['namefaila'], "w");
    fwrite($file$return);
    fclose($file);

    $info curl_getinfo($h); 
    //print_r($info); 

    echo 'saved is:  <a href="'.$urlpapki.''.$_POST["namefaila"].'">'.$_POST["namefaila"].'</a><br />';  
    echo 
    'time download: '.round($info['total_time']).' sec.<br />';  
    echo 
    'download speed: '.round($info['speed_download']/10243).' kb/s<br />'
    echo 
    'size: '.round($info['size_download']/10243).' kb';  
    ?>