Im construction d'une fonction Link Checker qui vérifie si le lien a le code 200/301/302. Je veux vérifier environ 1000 liens donc j'ai utilisé la fonctionnalité Multi-CURL et j'obtiens tous les en-têtes, codes, l'URL vers laquelle une URL redirigé.Contrôle de liaison avec multi-curl
Le problème est que Multi-CURL s'exécute en parallèle en ajoutant toutes les URL à curl_multi_add_handle et renvoie les résultats qu'il obtient et ignore le reste.
Je sais de l'en-tête quel résultat je suis revenu mais je ne sais pas quelle URL l'a amené. Existe-t-il un identifiant que l'URL que j'ai demandé pour un handle spécifique (peut-être quelque chose à voir avec curl_multi_info_read)?
Voici mon code:
$curls = $listofurls;
$curl_arr = array();
$master = curl_multi_init();
for($i = 0; $i < $node_count; $i++) {
$curl_arr[$i] = curl_init($curls[$i][0]);
curl_setopt($curl_arr[$i],CURLOPT_FRESH_CONNECT,true);
curl_setopt($curl_arr[$i],CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($curl_arr[$i],CURLOPT_HEADER,true);
curl_setopt($curl_arr[$i],CURLOPT_CUSTOMREQUEST,'HEAD');
curl_setopt($curl_arr[$i],CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl_arr[$i],CURLOPT_NOBODY,true);
curl_setopt($curl_arr[$i],CURLOPT_AUTOREFERER, 1);
curl_setopt($curl_arr[$i],CURLOPT_TIMEOUT,30);
curl_multi_add_handle($master, $curl_arr[$i]);
}
$finalresult = array();
do{
curl_multi_exec($master, $running);
$info = curl_multi_info_read($master);
if($info['handle']) {
$finalresult[] = curl_multi_getcontent($info['handle']);
curl_multi_remove_handle($master, $info['handle']);
}
$previousActive = $running;
}
while($running > 0);
curl_multi_close($master);
apprécier la Help.Thanx.
Merci d'avoir posté cette réponse. J'avais le même problème de savoir comment comprendre l'ordre. – Shawn