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 — Obtém informação sobre as transferências atuais
Interroga o manipulador múltiplo se existem mensagens ou informações das transferências individuais. Mensagens podem incluir informações como um código de erro da transferência ou apenas o fato de uma transferência ter sido concluída.
Chamadas repetidas a esta função irão retornar um novo resultado a cada vez, até que um valor false
for retornado
como um sinal de que não há mais o que receber no momento. O inteiro apontado pelo parâmetro
queued_messages
conterá o número de mensagens remanescentes depois que esta
função foi chamada.
Os dados apontados pelo recurso retornado não irão sobreviver à chamada a curl_multi_remove_handle().
multi_handle
Um manipulador cURL múltiplo retornado por curl_multi_init().
queued_messages
Número de mensagens que ainda estão na fila
Em caso de sucesso, retorna um array associativo para a mensagem, false
em caso de falha.
Chave: | Valor: |
---|---|
msg |
A constante CURLMSG_DONE . Outros valores de retorno
autalmente não estão disponíveis. |
result |
Uma das constantes CURLE_* . Se tudo estiver
correto, a constante CURLE_OK será o resultado. |
handle |
Recurso do tipo curl que indica o manipulador em questão. |
Versão | Descrição |
---|---|
8.0.0 |
O parâmetro multi_handle agora espera uma instância de CurlMultiHandle;
anteriormente, um resource era esperado.
|
Exemplo #1 Um exemplo de 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));
?>
O exemplo acima produzirá algo semelhante a:
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.