Foros del Web » Programando para Internet » PHP »

foreach y problema con curl

Estas en el tema de foreach y problema con curl en el foro de PHP en Foros del Web. hola buenas. Tengo un pequeño problema al intentar descargar unos archivos que tengo alojados en mi servidor. Estoy haciendo un script para que los descargue ...
  #1 (permalink)  
Antiguo 03/07/2012, 04:01
 
Fecha de Ingreso: julio-2012
Mensajes: 10
Antigüedad: 12 años, 4 meses
Puntos: 0
foreach y problema con curl

hola buenas. Tengo un pequeño problema al intentar descargar unos archivos que tengo alojados en mi servidor. Estoy haciendo un script para que los descargue automaticamente, y como son varios archivos recojo todas las urls en un array del tipo:
Código PHP:
 Array ( [0] => http://www.urldescarga1 [1] => http://www.urldescarga2 ) 
¿Cómo tengo q hacer para que curl me lea una por una las lineas del array y me las descargue?
Muchas gracias de antemano por vuestra ayuda
  #2 (permalink)  
Antiguo 03/07/2012, 09:04
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 9 meses
Puntos: 27
Respuesta: foreach y problema con curl

muestra todo tu codigo...
  #3 (permalink)  
Antiguo 03/07/2012, 09:08
Avatar de cadrogui  
Fecha de Ingreso: junio-2003
Mensajes: 875
Antigüedad: 21 años, 5 meses
Puntos: 5
Respuesta: foreach y problema con curl

foreach ($array as $item){
código curl -> $item
}

saludos
__________________
La mejor manera de aprender es por medio de un aprendizaje significativo....

http://www.cocert.cl
  #4 (permalink)  
Antiguo 03/07/2012, 09:49
 
Fecha de Ingreso: julio-2012
Mensajes: 10
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: foreach y problema con curl

Os pongo el codigo y haber si me podeis echar una mano muchas gracias de antemano
Código PHP:
    $URL "url de descarga";    // asi me funciona para una url de descarga pero yo quiero descargar todas una por una automaticamente y tengo todas las url en un array llamdo descargas
    

    
$folder "ruta"
    

    if (!
$folder || !isset($folder)){
        

        die (
"Please specify local folder name");
    }
    

    
$urls split("\n"$URL);
    

    
$urls str_replace("\r"""$urls);
    
$mh curl_multi_init();
foreach (
$urls as $i => $url) {
    
$path pathinfo($url);
    
$g=$folder "/" $path["basename"] ;

    

    echo 
"Descargado el archivo";

    if(!
is_file($g)){
        
$conn[$i]=curl_init($url);
        
$fp[$i]=fopen ($g"w");
        
curl_setopt ($conn[$i], CURLOPT_FILE$fp[$i]);
        
curl_setopt ($conn[$i], CURLOPT_HEADER ,0);

        
curl_multi_add_handle ($mh,$conn[$i]);
    }
}
do {
    
$n=curl_multi_exec($mh,$active);
}
while (
$active);
foreach (
$urls as $i => $url) {
    
curl_multi_remove_handle($mh,$conn[$i]);
    
curl_close($conn[$i]);
    
fclose ($fp[$i]);
}
curl_multi_close($mh); 
  #5 (permalink)  
Antiguo 03/07/2012, 10:41
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 9 meses
Puntos: 27
Respuesta: foreach y problema con curl

Código PHP:
Ver original
  1. // asi me funciona para una url de descarga pero yo quiero descargar todas una por una automaticamente y
  2. //tengo todas las url en un array llamdo descargas
  3. $arrayURL = array('http://url_1', 'http://url_2', 'http://url_3');
  4.  
  5. $folder = "ruta";
  6. if (!$folder || !isset($folder))
  7. {
  8.     die ("Please specify local folder name");
  9. }
  10.  
  11. //aca hacemos el giro
  12. foreach($arrayURL as $value)
  13. {
  14.     $urls = split("\n", $value);
  15.     $urls = str_replace("\r", "", $urls);
  16.     $mh = curl_multi_init();
  17.     foreach ($urls as $i => $url) {
  18.         $path = pathinfo($url);
  19.         $g=$folder . "/" . $path["basename"] ;
  20.         echo "Descargado el archivo";
  21.         if(!is_file($g)){
  22.             $conn[$i]=curl_init($url);
  23.             $fp[$i]=fopen ($g, "w");
  24.             curl_setopt ($conn[$i], CURLOPT_FILE, $fp[$i]);
  25.             curl_setopt ($conn[$i], CURLOPT_HEADER ,0);
  26.             curl_multi_add_handle ($mh,$conn[$i]);
  27.         }
  28.     }
  29.     do {
  30.         $n=curl_multi_exec($mh,$active);
  31.     }
  32.     while ($active);
  33.     foreach ($urls as $i => $url) {
  34.         curl_multi_remove_handle($mh,$conn[$i]);
  35.         curl_close($conn[$i]);
  36.         fclose ($fp[$i]);
  37.     }
  38.     curl_multi_close($mh);  
  39. }

Puedes probar de esa forma
  #6 (permalink)  
Antiguo 03/07/2012, 16:02
 
Fecha de Ingreso: julio-2012
Mensajes: 10
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: foreach y problema con curl

no me funciona, me sale q no esoty logueado y eso q le puse las cookies asi:

Código PHP:
$fp[$i]=fopen ($g"w");
        
curl_setopt($conn[$i], CURLOPT_COOKIEFILE$cookiefile);
        
curl_setopt($conn[$i], CURLOPT_COOKIEJAR$cookiefile); 

Última edición por mustang69; 03/07/2012 a las 16:11

Etiquetas: curl, foreach
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:59.