Foros del Web » Programando para Internet » PHP »

Transferir archivos a server remoto?

Estas en el tema de Transferir archivos a server remoto? en el foro de PHP en Foros del Web. Buen día gente! Hace unos días intentamos, desde diferentes server's (hijos), enviar a uno puntual (padre), una serie de archivos .zip, los cuales no tienen ...
  #1 (permalink)  
Antiguo 03/11/2017, 09:30
Avatar de NnikoO  
Fecha de Ingreso: agosto-2008
Ubicación: Rosario
Mensajes: 245
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta Transferir archivos a server remoto?

Buen día gente!

Hace unos días intentamos, desde diferentes server's (hijos), enviar a uno puntual (padre), una serie de archivos .zip, los cuales no tienen un peso superior a 10MB.

Estos son archivos que se generan dinámicamente, como mucho 1 diario por cada uno de estos servers hijos, y se deben transferir al momento de crearse (todos prácticamente a la misma hora). A grandes rasgos, serían unos 25 archivos, provenientes de 25 servers diferentes, con un peso menor a 10MB cada uno, que deben volcarse en este server padre.

Los servers hijos no coinciden todos en una misma configuración, varían.

Estuve probando con Curl, logro conectar con el server padre, enviar data, pero, no transferir el archivo.

Que posibilidades seguras y efectivas según el peso de los archivos recomiendan?

Muchas gracias de antemano por su tiempo.

EDITADO
Desde el server padre, al momento de recibir nombre de nuevo archivo, conecto por FTP, y obtengo el archivo a través de ftp_get, es esto correcto? Esta bien implementado?

Última edición por NnikoO; 03/11/2017 a las 10:05
  #2 (permalink)  
Antiguo 03/11/2017, 11:22
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Transferir archivos a server remoto?

Lo que pretendes es algun tipo de backup?

Si tienes errores de tiempo o tamaño de ejecución usa ini_set para cerciorar que cumples los parametros dados

Código PHP:
Ver original
  1. ini_set( 'memory_limit', 'value' ); //value in Mb end with M, ex: 50M, 50mb max send
  2. ini_set('upload_max_filesize', 'value'); //equal up
  3. ini_set('post_max_size', 'value');  //equal up
  4. ini_set('max_input_time', secs);  //max time of excecution script in seconds
  5. ini_set('max_execution_time', secs); //equal up

En cuanto a enviar archivos mediante a curl usa esto:

Código PHP:
Ver original
  1. $url = "http://127.0.0.1/dir/send.php"; //target url
  2. $file = "backup.zip"; //the file
  3. $postName = "files"; //post file name in server, ex. $_FILES["files"][properities]
  4. $timeout = 100; //timeout of excecution, in secs
  5.  
  6. $cfile = new CURLFile(realpath($file));
  7. $post = array($postName => $cfile );
  8.  
  9. $ch = curl_init();
  10. curl_setopt($ch, CURLOPT_URL, $url);
  11. curl_setopt($ch, CURLOPT_POST, 1);
  12. curl_setopt($ch, CURLOPT_HEADER, 0);
  13. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
  14. curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type: multipart/form-data'));
  15. curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1);  
  16. curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);  
  17. curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
  18. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  19.  
  20. $result = curl_exec($ch);
  21.  
  22. if($result === false){
  23. //to do if error
  24. }
  25. else{
  26. //to do if success
  27. }  
  28.  
  29. curl_close ($ch);

Del lado del servidor usas, tu rutina, pero con $_FILES[send], donde send = $postName del código que te di

P.S: a mi me funciona si a ti no revisa las opciones de seguridad

Edito, no vi tu edición, mira mientras consigas lo que necesitas está bien, eso si asegura que la conexión a ftp sea segura, si eso esta bien, todo ok.

Saludos

Última edición por alvaro_trewhela; 03/11/2017 a las 13:18
  #3 (permalink)  
Antiguo 03/11/2017, 14:09
 
Fecha de Ingreso: octubre-2009
Mensajes: 305
Antigüedad: 14 años, 6 meses
Puntos: 29
Respuesta: Transferir archivos a server remoto?

si usas ftp ¿para que usar cURL?, es más si los severs son linux yo usaría scp

Etiquetas: curl, externo, remoto
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 05:47.