PHP 8.3.4 Released!

curl_multi_info_read

(PHP 5, PHP 7, PHP 8)

curl_multi_info_readObtém informação sobre as transferências atuais

Descrição

curl_multi_info_read(CurlMultiHandle $multi_handle, int &$queued_messages = null): array|false

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.

Aviso

Os dados apontados pelo recurso retornado não irão sobreviver à chamada a curl_multi_remove_handle().

Parâmetros

multi_handle

Um manipulador cURL múltiplo retornado por curl_multi_init().

queued_messages

Número de mensagens que ainda estão na fila

Valor Retornado

Em caso de sucesso, retorna um array associativo para a mensagem, false em caso de falha.

Conteúdo do array retornado
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.

Registro de Alterações

Versão Descrição
8.0.0 O parâmetro multi_handle agora espera uma instância de CurlMultiHandle; anteriormente, um resource era esperado.

Exemplos

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)

Veja Também

add a note

User Contributed Notes 1 note

up
-2
Nick Smith
13 years ago
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.
To Top