Pagina 2 di 2 PrimoPrimo 12
Visualizzazione risultati 31 fino 32 di 32
Like Tree1Likes

Discussione: Richieste cURL lente!

  1. #31
    faidateitalia non è connesso Utente giovane
    Data registrazione
    05-05-2015
    Messaggi
    30

    Predefinito

    Com'è che avresti modificato precisamente il mio script per ottenere quei risultati?

  2. #32
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Con il codice che ai proposto prima è qualche istante più veloce, ovviamente ho corretto la verifica del domino e certificato,valorizzato $running.
    In questo esempio uso il do while perché almeno una volta il codice deve eseguirsi, unset per liberare memoria. (rallenta qualche millesimo). Però, sarebbe utile effettuare dei test sui diversi cicli per la cpu.
    ecco a.php che va azionato con http://nick.altervista.org/a.php?a=0
    Codice PHP:
    <?php
    function getmicrotime(){
    list(
    $usec, $sec) = explode(" ",microtime());
    return ((float)
    $usec + (float)$sec);
    }

    $time_start = getmicrotime();//sec iniziali

    error_reporting(E_ALL | E_NOTICE | E_STRICT | E_DEPRECADED);
    ini_set("display_errors" , "stdout");
    ini_set("display_startup_errors" , 1);
    /**
    @nodes array di url contenenti la richiesta alle Google API
    */
    if(isset($_GET['a'])){
    function
    multiCurl($nodes) {

    $node_count = count($nodes);

    $curl_arr = array();
    $master = curl_multi_init();

    $options = array(
    CURLOPT_AUTOREFERER => true,
    CURLOPT_HEADER => false,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => false,
    CURLOPT_TIMEOUT => 3,
    CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4,
    CURLOPT_SSL_VERIFYHOST => false,
    CURLOPT_SSL_VERIFYPEER => false
    );

    $i = 0;
    do
    {
    $url =$nodes[$i];
    $curl_arr[$i] = curl_init($url);
    curl_setopt_array($curl_arr[$i], $options);
    curl_multi_add_handle($master, $curl_arr[$i]);
    $i++;
    } while (
    $i < $node_count);
    unset(
    $_GET,$url,$nodes,$options,$i);

    $running = null;
    do {
    curl_multi_exec($master, $running);
    } while(
    $running);

    $i = 0;
    $results = array();
    do {

    curl_multi_remove_handle($master, $curl_arr[$i]);
    if(!
    curl_errno($curl_arr[$i])){
    $info[$i] = curl_getinfo($curl_arr[$i]);
    }else{
    $info[$i] = 'Curl error: '.curl_error($curl_arr[$i]);
    }
    if(
    $i == $node_count-1){
    curl_multi_close($master);
    }
    $results[$i] = array($i => $info[$i] , curl_multi_getcontent($curl_arr[$i]));
    $i++;
    }
    while (
    $i < $node_count);


    unset(
    $running,$i,$info,$master,$curl_arr,$node_count);
    return
    $results;
    }
    $i = 0;
    $node_count = 200;
    do{
    $nodes[$i] ='http://nick.altervista.org/b.php?'.$i.'='.$i;
    $i++;
    } while (
    $i < $node_count);
    print_r(multiCurl($nodes));
    unset(
    $nodes,$i,$node_count);
    }


    $time_end = getmicrotime();//sec finali

    $time = $time_end - $time_start;//differenza in secondi

    echo "Sono trascorsi $time secondi per l'esecuzione del codice.";
    unset(
    $time_end,$time_start,$time);
    ?>
    Ultima modifica di darbula : 18-04-2016 alle ore 16.49.13

Pagina 2 di 2 PrimoPrimo 12

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •