Just to let others who might be struggling to get it to work, curl_multi_info_read() doesn't work in PHP versions before 5.2.0, and instead returns NULL immediately.
(PHP 5, PHP 7, PHP 8)
curl_multi_info_read — Lit les informations sur les transferts actuels
Appelle le gestionnaire multiple s'il y a des messages ou des informations issus des transferts individuels. Les messages peuvent inclure des informations comme un code erreur du transfert, ou juste le fait que le transfert est terminé.
Les appels répétés à cette fonction retournera un nouveau résultat à chaque fois,
tant que false
n'est pas retourné, indiquant qu'il n'y a plus rien à récupérer
pour le moment. L'entier présent dans le paramètre queued_messages
représente le nombre de messages restant une fois cette fonction appelée.
Les données pointées par la ressource retournée, ne survivront pas à l'appel de la fonction curl_multi_remove_handle().
multi_handle
Un gestionnaire cURL multiple retourné par curl_multi_init().
queued_messages
Nombre de messages encore présents dans la file d'attente
Retourne un tableau associatif contenant le message en cas de succès,
false
si une erreur survient.
Key: | Value: |
---|---|
msg |
La constante CURLMSG_DONE . Les autres valeurs retournées
sont actuellement non disponibles. |
result |
Une des constantes CURLE_* . Si tout s'est bien déroulé,
la constante CURLE_OK sera retournée. |
handle |
Ressource de type curl indiquant le gestionnaire concerné. |
Version | Description |
---|---|
8.0.0 |
multi_handle attend désormais une instance de CurlMultiHandle;
auparavant; une resource était attendue.
|
Exemple #1 Exemple avec curl_multi_info_read()
<?php
$urls = array(
"http://www.cnn.com/",
"http://www.bbc.co.uk/",
"http://www.yahoo.com/"
);
$mh = curl_multi_init();
foreach ($urls as $i => $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);
curl_multi_add_handle($mh, $conn[$i]);
}
do {
$status = curl_multi_exec($mh, $active);
if ($active) {
curl_multi_select($mh);
}
while (false !== ($info = curl_multi_info_read($mh))) {
var_dump($info);
}
} while ($active && $status == CURLM_OK);
foreach ($urls as $i => $url) {
$res[$i] = curl_multi_getcontent($conn[$i]);
curl_close($conn[$i]);
}
var_dump(curl_multi_info_read($mh));
?>
Résultat de l'exemple ci-dessus est similaire à :
array(3) { ["msg"]=> int(1) ["result"]=> int(0) ["handle"]=> resource(5) of type (curl) } array(3) { ["msg"]=> int(1) ["result"]=> int(0) ["handle"]=> resource(7) of type (curl) } array(3) { ["msg"]=> int(1) ["result"]=> int(0) ["handle"]=> resource(6) of type (curl) } bool(false)
Just to let others who might be struggling to get it to work, curl_multi_info_read() doesn't work in PHP versions before 5.2.0, and instead returns NULL immediately.