Vale, os comento un poco. Tengo dos páginas en dos servidores diferentes:
Página 1: www.paginaprincipal.com
Página 2: www.servidorgordo.com
En la página principal (1) tengo una web con un formulario para subir ficheros. Estos ficheros tendrán ser guardados en servidor gordo (2) y devolver la URL (o un ID) del fichero.
¿Cómo lo haríais?
Citar
Datos:
- Tiene que devolver un ID que se guarda en la base de datos por lo que no podría ser FTP.
- Tiene que ser lo más rápido posible. ¿Lógico, no?
- La web (1) tiene que enviar el ID del usuario al servidor (2).
Espero vuestras ideas!
El algoritmo para subir y procesar la imagen puede estar servidor dos, o en el 1?
Cita de: WarGhost en 8 Junio 2012, 18:27 PM
El algoritmo para subir y procesar la imagen puede estar servidor dos, o en el 1?
No entiendo muy bien la pregunta.
Si dices a que servidor apunta el form, la respuesta es el 1.
Por eso es el servidor 1 recibe el archivo y lo tiene que mandar al 2 y que el dos le de una respuesta.
La única ventaja es que la transferencia entre servidores es más rápido 100Mb simétricos.
Fácil, que el id lo genere el servidor donde está la web y mande el archivo via post data al servidor de los archivos con el id y que guarde el archivo con el id incluido (que no es el id real de archivo sino un token de localización) y ya está.
De hecho la idea es que utilices un mismo dominio con subdominios diferentes para compartir las cookies y verificar la autentificación del usuario en ambos servidores.
Si el servidor 2 no es tuyo podrias agregar un subdominio apuntando al servidor real y listo.
El problema es que el ID lo tiene que generar el servidor (2) y el problema es que el usuario no puede saber que el archivo se ha guardado en otro servidor, por eso no se puede hacer con lo de las cookies como has dicho.
Haces que en el servidor que sirve los archivos, lleguen las url de descarga encriptadas:
http://php.net/manual/es/function.urlencode.php
asi el usuario no vera de donde se le estan sirviendo.
Cita de: Graphixx en 9 Junio 2012, 18:44 PM
Haces que en el servidor que sirve los archivos, lleguen las url de descarga encriptadas:
http://php.net/manual/es/function.urlencode.php
asi el usuario no vera de donde se le estan sirviendo.
El problema no es servir los archivos, sino llegar a subir los ficheros.
creo que no es lo mas optimo ni mucho menos lo mas rápido, pero con curl se podria hacer, es decir recibes el archivo en server 1 y luego mediante curl lo envias a server 2 quien lo guarda y muestra un id, con el php del server 1 parseas la respuesta del server para obtener el id.
De esa manera el cliente nunca se entera de esa comunicacion entre server 1 y 2.
Saludos
Cita de: it3r en 9 Junio 2012, 19:32 PM
creo que no es lo mas optimo ni mucho menos lo mas rápido, pero con curl se podria hacer, es decir recibes el archivo en server 1 y luego mediante curl lo envias a server 2 quien lo guarda y muestra un id, con el php del server 1 parseas la respuesta del server para obtener el id.
De esa manera el cliente nunca se entera de esa comunicacion entre server 1 y 2.
Saludos
Justamente estaba pensando en eso, cURL, pero si que existen muchas otras formas para transmitir archivos internamente, por eso pregunto al foro cual es la mejor.
Yo igual te recomiendo ocupar Curl, es muy rápido...
Se me ocurre tambien que si los 2 servidores estan en la misma red puedes utilizar un php que llame a un comando del sistema como scp para copiar mediante red el archivo y ya con curl envías la ruta en que queda el archivo y ademas recibes el id.
saludos