Com'è che avresti modificato precisamente il mio script per ottenere quei risultati?
Printable View
Com'è che avresti modificato precisamente il mio script per ottenere quei risultati?
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=0Codice 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);
?>