viernes, 8 de febrero de 2008

Copiar archivos de un sitio a otro con la función copy de php


Un día se me ocurrió copiar un archivo comprimido y decidí hacer el proceso
de la siguiente manera:
creo una carpeta en el servidor con cualquier nombre, por ejemplo mis-pruebas si es necesario le doy permisos 755 y verifico que este vacia, allí coloco el script, cuando lo ejecute los archivos copiados "caeran" en el mismo directorio

<?php
$origen = 'http://www.sitiodeinternet.com/archivo.zip';
$destino='archivo.zip'
copy ($origen,$destino);
?>

Luego me gustó el chiche, y probé bajar fotos en modo "BATCH" así:
si no lo hice antes creo una carpeta en el servidor con cualquier nombre, por ejemplo mis-pruebas y le doy permisos 755 si es necesario
<?php
$origen='http://www.sitiodeinternet.com/';
$foto[] = 'foto1.jpg';
$foto[]='foto2.jpg';
//... y asi sucesivamente
foreach ($foto as $key=>$value) {copy("$origen/$value",$value); }
echo "archivos copiados!";
?>
Como puede apreciarse el código no comprueba si los archivos solicitados existen o no, supuestamente deben existir para ser bajados, sino durante la iteración la función dará un error, esto puede resolverse manejando los errores y comprobando previamente si hay archivos de origen a copiar o no, pero esto dejemoslo para más adelante.la función también puede desplegar un error si el directorio donde se coloque este script no tiene los permisos correspondientes.
Nota: este script debe tomarse como didáctico no soy responsable por el uso o mal uso del mismo
Reacciones:

2 comentarios:

espectador dijo...

esto funciona con archivos de tamaño pequeño, con archivos grandes da time out, alguna solución??

Daniel dijo...

podes colocar en la cabecera de tu script lo siguiente:

set_time_limit(0);

o sino tocando directamente el php.ini

max_execution_time = 180

colocandole mas segundos de tiempo de ejecucion

un abrazo