Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Links alternativos con PHP

Iniciado por matriax, 04 de Junio de 2009, 04:58:49 PM

« anterior - próximo »

matriax

Sinceramente no sabia como titular el tema asi que he puesto lo primero que me ha venido a la cabeza.

Imaginemos que tenemos un link de descarga ya sea de un juego o de lo que sea.

Por algun motivo ese link deja de funcionar, ya sea por el host o cualquier otro motivo, entonces ese link ya no funciona a no ser que pase X tiempo a que vuelva la normalidad o lo actualizes y pongas un mirror provisional.

La idea es saber si se puede hacer que un link tenga varios enlaces alternativos, y en caso de que el primero no este disponible pasa al fichero del siguiente host automaticamente.

Supongo que seria algo que comprobara el estado de los ficheros, si hay error pasa al siguiente hasta encontrar uno valido para la descarga.

No se si habra algo exactamente asi, pero si hay cualquier otra cosa similar tambien me interesa.
Pagina Oficial: http://www.taykron.com
Flash Portal : http://www.arkatia.com
Blog Personal : http://matriax.blogspot.com/

[EX3]

Chapuceramente, lo que se me ocurre asi de primeras seria programar un metodo en PHP al que le puedas asignar varias urls y que el enlace en la pagina apunte a ese metodo. Dicho metodo comprobaria si la primera url esta disponible, de lo contrario que pase a la segunda, y acorde a ello ejecute la URL valida.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

matriax

Cita de: [EX3] en 04 de Junio de 2009, 05:55:09 PM
Chapuceramente, lo que se me ocurre asi de primeras seria programar un metodo en PHP al que le puedas asignar varias urls y que el enlace en la pagina apunte a ese metodo. Dicho metodo comprobaria si la primera url esta disponible, de lo contrario que pase a la segunda, y acorde a ello ejecute la URL valida.

Salu2...

Me interesa, sabes como hacerlo o con que nombre buscarlo? He estado buscando por internet y lo unico que se le parece es un checkeador de URLS para saber si estan online. Pero de ahi a eso que comentas.. seguire buscando.
Pagina Oficial: http://www.taykron.com
Flash Portal : http://www.arkatia.com
Blog Personal : http://matriax.blogspot.com/

[EX3]

Me encantaria pero de saber hacerlo me temo que seria como mucho ASP.NET que es lo que mas o menos conozco en cuanto a programacion web ^_^' Pero vamos, por aqui por el foro alguno maneja PHP y seguramente sepa que API permite trabajar URL's para ejecutarlas. Se que en ASP.NET hay un objeto o metodos para manipular strings que representan URL's, comprobar si existen (si apuntan a un destino valido) y ejecutarlos mediante una llamada. Por eso me supongo que en PHP tendra que haber algo por huevos. Asi de primeras he encontrado esto en google que serviria para lo que decia:

Para saber si una URL existe o es valida:
http://www.mundomanuales.com/programacion/php/verificar-la-existencia-de-una-url-297.html
http://www.desarrolloweb.com/articulos/402.php

Siento no poder ser mas de ayuda. Espero que te sirva de algo :)

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

josepzin

¿Y porqué no pones los famosos "Descargar", "Descarga desde fuente alternativa 1", "Descarga desde fuente alternativa 2", etc?

matriax

Cita de: josepzin en 05 de Junio de 2009, 07:47:08 AM
¿Y porqué no pones los famosos "Descargar", "Descarga desde fuente alternativa 1", "Descarga desde fuente alternativa 2", etc?

Pues es debido a que tengo un contador de descargas, y tengo 3 links para las diferentes versiones: Windows, Linux y MacOS.

Si hiciera lo que dices y pusiera 4 o 5 mirrors mas, tendria que crear para cada una de ellas 4 mas. Y luego en las estadisticas que ofrece el contador de clicks cuando quiera ver cuantos lleva la version de windows, linux o MacOS, tendria que buscar y anotarme los links de X version y sumarlos.

La idea es dejarlo como esta ahora, y que ese link apunte al PHP con las urls a la version X con su verificacion y devuelva una url de descarga correcta. De esta forma se baje de donde se baje contara +1 en la version que sea y solo tendre 3 links en las estadisticas del contador en lugar de 10 o los que sean.

Suena un poco chapucero tal vez pero bueno, era por saber si habia alguna forma sencilla.
Pagina Oficial: http://www.taykron.com
Flash Portal : http://www.arkatia.com
Blog Personal : http://matriax.blogspot.com/

josepzin

#6
Entonces lo tuyo es esto: http://www.forosdelweb.com/f18/faqs-php-530600/index2.html#post333428

Habría que crear un archivo descargar.php que devuelva una url de un listado... nunca lo hice, pero no parece complicado si sabes algo de PHP

HarvesterOfAcorns

Te sugiero un método, aunque para ponerlo en práctica son imprescindibles un par de cosas que sin duda limitan la solución, la primera es que tengas acceso al servidor o servidores desde donde se descarga el archivo y la segunda es que el servidor en cuestión sea Apache, aunque supongo que otros servidores tendrán mecanismos semejantes, este es el que yo conozco un poco :P

En la carpeta donde guardas el archivo a descargar has de crear un fichero .htaccess y escribir en él las siguiente línea, en el caso que el error esperado sea el 500, error interno del servidor:

ErrorDocument 500 http://nueva_direccion_de_descarga/archivo.extension


donde "nueva_direccion_de_descarga/archivo.extension" será la URL de otra copia del archivo a descargar, en esa carpeta deberás poner otro .htaccess similar dirigiendo el error a otro posible punto de descarga alternativo. Ten en cuenta que cualquier error arrojado para esa carpeta te redirigirá al archivo alternativo, supongo que lo ideal es que en esa carpeta solo esté el archivo en cuestión.

Puedes redirigir en caso de otros errores, basta cambiar el número.

Espero te sirva ;)

HarvesterOfAcorns

A ver si te sirve lo siguiente, es un método más fácil de poner en práctica, con PHP

Código (php) [Seleccionar]

<?php$url1 = "http://www.servidor1/archivo.arch";$url2 = "http://www.servidor2/archivo.arch";if(fopen($url1,"r")!=FALSE){echo '<a href='.$url1.'>'.$url1.'</a>';}else if(fopen($url2,"r")!=FALSE){echo '<a href='.$url2.'>'.$url2.'</a>';}?>



comprueba que el archivo es accesible antes de mostrar el link adecuado.

matriax

Hola, gracias a los 2 por las respuestas.

HarvesterOfAcorns probare tu codigo mañana y ya os contare que tal.

Saludos.
Pagina Oficial: http://www.taykron.com
Flash Portal : http://www.arkatia.com
Blog Personal : http://matriax.blogspot.com/

fjfnaranjo

Tiene que tener el fopen habilitado lo de las URLs, pero puede servir.

Mejor cachea esas consultas porque consumen bastante tiempo según la respuesta del otro servidor.

Y no olvides quedarte con el identificador del fopen para cerrar el recurso bajo las comprobaciones.
fjfnaranjo.com - Creating entertainment - Creando entretenimiento
fjfnaranjo [4t] gm4il [d0t] c0m (mail y msn)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.