Para aquellos que necesiten conexiones múltiples con cURL para acceder a varias web, este ejemplo es un buen comienzo:
<?php
// Create two cURL handlers
$ch1 = curl_init(); $ch2 = curl_init();
// Set options on both
curl_setopt($ch1, CURLOPT_URL, "http://example.com/");
curl_setopt($ch2, CURLOPT_URL, "http://example2.com/");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
$mh = curl_multi_init();
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);
$running=null;
do {
curl_multi_exec($mh,$running);
} while ($running > 0);
$data1 = curl_multi_getcontent($ch1);
$data2 = curl_multi_getcontent($ch2);
curl_multi_remove_handle($ch1);
curl_multi_remove_handle($ch2);
curl_multi_close($mh);
?>
Se trata de usar en vez de curl_init usar curl_multi_init y sus funciones asociadas.
Parallel web scraping in PHP: cURL multi functions
Vía / dzone
Esto funciona en el caso de que envÃes el contenido sin compresión.
Si lo envÃas en gzip o deflate el flush no tiene sentido ya que el contenido se envÃa todo junto al final.
Lo mismo que dice Pablo y añado que tampoco es compatible con sistemas de caché.
Pablo, Peter, tenéis toda la razón del mundo, está claro que si mandas en gzip no necesitas el flush y si cacheas, tampoco. Son soluciones alternativas
Saludos