Foros del Web » Programando para Internet » PHP »

Include de un archivo en otro servidor

Estas en el tema de Include de un archivo en otro servidor en el foro de PHP en Foros del Web. Buenas... Me gustaría hacer un include de un archivo de texto que se encuentra en otro servidor. Hasta ahora lo estoy haciendo un include normal, ...
  #1 (permalink)  
Antiguo 23/02/2006, 04:30
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
Include de un archivo en otro servidor

Buenas...

Me gustaría hacer un include de un archivo de texto que se encuentra en otro servidor. Hasta ahora lo estoy haciendo un include normal, indicando la URL donde se encuentra el archivo. Funciona, pero tengo la duda de si es la mejor manera de hacerlo, o existe otra alternativa.

Un saludo
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #2 (permalink)  
Antiguo 23/02/2006, 07:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Hola Ferny.

Usar el include() es la mejor manera si no haces ningún proceso o almacenas esos datos que lees de tu archivo de texto plano (o URL en general y lo que esten entregue).

Podrías "liarte" simulando una conexión por sockets con fsockopen() e implementando parte del protocolo HTTP. Esto sería útil por ejemplo si tienes que pasar por un proxy para acceder a tu archivo .. o hay alguna autentificación HTTP por médio .. Pero parece que ese no es tu caso?.

Un saludo,
  #3 (permalink)  
Antiguo 24/02/2006, 04:37
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
En realidad lo que quiero hacer en un futuro es un .php que lea el archivo del otro servidor, y lo que lea lo guarde en un archivo en mismo servidor donde está el .php

Ahora mismo el include funciona, pero si el otro servidor cae, evidentemente no lo realiza. Lo que quiero es hacer un php que lea el archivo del otro servidor, y si está disponible pues actualiza un fichero propio, pero si no lo está, deja el que tuviera de antes. Y entonces el include lo haría del fichero local y no del remoto.

¿La metodología sería similar? Imagino que para poder hacerlo tendría que usar buffers, ¿no?

__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #4 (permalink)  
Antiguo 24/02/2006, 10:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Podrías usar en ese caso:

Código PHP:
<?php
   
// extraido de php.net
   // Por: Fabrizio (staff at bibivu dot com) 22-Dec-2005 04:11 

   
function url_exists($url) {
       
$a_url parse_url($url);
       if (!isset(
$a_url['port'])) $a_url['port'] = 80;
       
$errno 0;
       
$errstr '';
       
$timeout 30;
       if(isset(
$a_url['host']) && $a_url['host']!=gethostbyname($a_url['host'])){
           
$fid fsockopen($a_url['host'], $a_url['port'], $errno$errstr$timeout);
           if (!
$fid) return false;
           
$page = isset($a_url['path'])  ?$a_url['path']:'';
           
$page .= isset($a_url['query'])?'?'.$a_url['query']:'';
           
fputs($fid'HEAD '.$page.' HTTP/1.0'."\r\n".'Host: '.$a_url['host']."\r\n\r\n");
           
$head fread($fid4096);
           
fclose($fid);
           return 
preg_match('#^HTTP/.*\s+[200|302]+\s#i'$head);
       } else {
           return 
false;
       }
   }

// El url completo de tu archivo remoto:
$url="http://www.tal.tal/archivo.tal";

if (
$url){
   
// Si existe el archivo remoto .. te lo traes por captura del buffer. Podría ser también por fopen() .. fread() ..etc

   // inicias captura del buffer
   
ob_start():
   
// incluyes tu archivo ...
   
include("http://www.tal.tal/archivo.tal");
   
// te llevas a una variabel todo el buffer que tengas ...
   
$archivo=ob_get_contents();
  
// Te deshaces del buffer (ya lo tienes en tu variable) para usarlo cuando  quieras si lo necesitas presentar tal cual.
   
ob_end_clean();
} else {
   
// trabajas con tu archivo local ...
}
Un saludo,
  #5 (permalink)  
Antiguo 24/02/2006, 17:06
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
La parte de abajo es justo como pensaba La de arriba tengo que pararme detenidamente a leerla

Imagino que donde pusiste:
Código PHP:
<? ...
if (
$url){
... 
?>
Debería poner:
Código PHP:
<? ...
if (
url_exists($url)){
... 
?>
Para que verifique la URL, ¿cierto?

Mil gracias y un saludo
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #6 (permalink)  
Antiguo 27/02/2006, 05:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Así es .. se me pasó el uso de la función.

Un saludo,
  #7 (permalink)  
Antiguo 27/02/2006, 06:22
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
Muchas gracias por todo
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
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 03:43.