http://github.com/jmathai/epicode/tree/master/php/EpiCurl.php
If you fire off 10 curl requests in parallel you don't have to wait for all of them to be finished before accessing one which is already finished.
curl_multi_init
(PHP 5)
curl_multi_init — Retorna um novo multi manipulador cURL
Descrição
resource curl_multi_init
( void
)
Permite o processamento de múltiplas manipuladores cURL em paralelo.
Parâmetros
- mh
-
Um manipulador múltiplo cURL retornado por curl_multi_init().
Valor Retornado
Retorna um manipulador cURL em sucesso, FALSE em falha.
Exemplos
Exemplo #1 curl_multi_init() example
Este exemplo irá criar dois manipuladores cURL, e adiciona-os ao multi manipulador, e então executá-os em paralelo.
<?php
// create both cURL resources
$ch1 = curl_init();
$ch2 = curl_init();
// set URL and other appropriate options
curl_setopt($ch1, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "http://www.php.net/");
curl_setopt($ch2, CURLOPT_HEADER, 0);
//create the multiple cURL handle
$mh = curl_multi_init();
//add the two handles
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);
$running=null;
//execute the handles
do {
curl_multi_exec($mh,$running);
} while ($running > 0);
//close the handles
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
?>
Veja Também
- curl_init() - Inicializa uma sessão cURL
- curl_multi_close() - Fecha um conjunto de manipuladores cURL
curl_multi_init
jaisen at jmathai dot com
30-May-2008 05:09
30-May-2008 05:09
ssttoo at gmail dot com
25-Feb-2008 11:57
25-Feb-2008 11:57
An example of how to make parallel POST/GET requests through a reusable function:
http://www.phpied.com/simultaneuos-http-requests-in-php-with-curl/
Anonymous
25-Jan-2008 04:09
25-Jan-2008 04:09
In the example above, rather than busy looping, curl_multi_select() should be used. The call isn't adequately described in the php documentation, so you need to look at the libcurl-multi man page. curl_multi_fdset() on this page is curl_multi_select() here, and curl_multi_perform() is curl_multi_exec() here. Read on and write better code.
php at twobears dot cz
17-Dec-2007 04:02
17-Dec-2007 04:02
It's not good to use plain while cycle like in the example because you are going to consume all the cpu time just by checking if you are not done. E.g. using usleep(50) in the middle of while could solve that gracefully...
snoyes at gmail dot com
30-Jul-2007 12:39
30-Jul-2007 12:39
In the example shown, the calls to curl_multi_remove_handle() should include the resource as the first parameter:
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
