Foros del Web » Programando para Internet » PHP »

fopen y fsockopen

Estas en el tema de fopen y fsockopen en el foro de PHP en Foros del Web. Tengo un pequeño problema con las funciones fopen y fsokopen, les pondre un ejemplo para que vean que pasa y pueda alguien responder mi duda ...
  #1 (permalink)  
Antiguo 26/06/2006, 14:09
 
Fecha de Ingreso: marzo-2006
Mensajes: 22
Antigüedad: 18 años, 8 meses
Puntos: 0
fopen y fsockopen

Tengo un pequeño problema con las funciones fopen y fsokopen, les pondre un ejemplo para que vean que pasa y pueda alguien responder mi duda

Ejemplo con fopen
$conexion=$fp = fopen($url, "r");

if ($conexion){
echo "existe";
} else {
echo "no existe";
}

esto me da el sgte error:
fopen($url) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

Ejemplo con fsockopen

$da = fsockopen( $dominio , 80, $errno, $errstr, 30);
if (!$da)
{
echo "ok";
} else {
echo "no";
}
con esta da el sgte. error
unable to connect to $dominio:80 (A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond

en las variables $url y $dominio va la url o el dominio correspondiente , no los puse pues no me deja , pues no tengo mas de 15 mensajes enviados

ya comprobe que los wrappers estuviesen activados
es necesario tener la extension php_sockets activada??

De que forma puedo solucionar los errores anteriores
Slds
Anglada
  #2 (permalink)  
Antiguo 26/06/2006, 15:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Esto va en el foro general de PHP ;)

Pero respondiendo, PHP te esta diciendo el error, el host que quieres abrir no ha contestado despues de un tiempo, o sea ha tenido un timeout, y no responde, a los comandos, por lo cual puedes suponer que esta fuera de linea.
  #3 (permalink)  
Antiguo 27/06/2006, 08:57
 
Fecha de Ingreso: marzo-2006
Mensajes: 22
Antigüedad: 18 años, 8 meses
Puntos: 0
otra vez

Creo que el problema es otro, puesta trato de acceder a esa direccion con cualquier navegador , ya sea IE , Firefox , etc y la url esta disponible , es decir la pagina, dominio,etc esta.

Puede existir la posiblidad de que en el proxy de la red a la cual pertenezco halla algun tipo de restriccion que me impida conectarme de esta forma, es decir utilizando las funciones fopen o fsokopen?????

Estoy preguntando exactamente por estas funciones porque estoy comenzando con RSS , exactamente con las clases lasRRS(que utiliza fopen) y MagpieRSS(que utiliza fsockopen) y no me pinchaban hasta que tracee el codigo y me percate que era exactamente en estas funciones donde esta el problema.
Estas funciones solamente me pinchan en la red interna y no puede ser que no pueda acceder a ninguna url o dominio fuera de mi red.

Les comento mas, anteriormente estuve indagando con webservices y me pasaba algo parecido con los arcivos de extension .wsdl
Si alguien tiene una idea , sugerencia , por favor, responda este mensaje.
  #4 (permalink)  
Antiguo 27/06/2006, 09:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Si estas detras de un proxy, no creo que un simple fopen y fsockopen te funcionen, vas a tener que implementar, otro tipo de solucion como CURL, o ver como funciona el proxy y entrar por ahi.

Las funciones de fopen y fsockopen son directas es decir aunque tu des de alta un proxy en IE, no lo toman en cuenta, nescesitas programar tu que primero se inicie en el proxy.

Te recomiendo que busques una clase que se llama Snoopy, para obtener datos via internet, creo tiene soporte para Proxys.
  #5 (permalink)  
Antiguo 27/06/2006, 09:46
 
Fecha de Ingreso: marzo-2006
Mensajes: 22
Antigüedad: 18 años, 8 meses
Puntos: 0
gracias por tu respuesta, voy a indagar sobre lo que me dijiste
  #6 (permalink)  
Antiguo 27/06/2006, 09:49
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 19 años
Puntos: 1
hola compañeros,

mirando tu código, y ejecutandolo, he visto que quizás tengas las condiciones al revés.
Tú tienes:
Código PHP:
$dominio "www.google.es";
$da fsockopen($dominio 80$errno$errstr30);
if (!
$da){
    echo 
"ok";
}
else {
    echo 
"no";

lo que devuelve como respuesta 'no'. En cambio si cambias el código a
Código PHP:
$dominio "www.google.es";
$da fsockopen($dominio 80$errno$errstr30);
if (
$da){
    echo 
"ok";
}
else {
    echo 
"no";

devuelve 'ok'. Sobre los mensajes de error parecen indicar que el host al que quieres conectar no responde pero resulta extraño si dices que usando el navegador si que llegas al host. Raro....
P.D. si no te importa darnos el host de destino para hacer pruebas de intentos de conexión con él mediante php, telnet, etc
__________________
http://www.nosoynadie.net/
  #7 (permalink)  
Antiguo 27/06/2006, 09:51
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 19 años
Puntos: 1
Cita:
Iniciado por GatorV
Si estas detras de un proxy, no creo que un simple fopen y fsockopen te funcionen, vas a tener que implementar, otro tipo de solucion como CURL, o ver como funciona el proxy y entrar por ahi.

Las funciones de fopen y fsockopen son directas es decir aunque tu des de alta un proxy en IE, no lo toman en cuenta, nescesitas programar tu que primero se inicie en el proxy.

Te recomiendo que busques una clase que se llama Snoopy, para obtener datos via internet, creo tiene soporte para Proxys.
duda de inculto,

si no configuras los navegadores para que usen proxies, si te aseguras de no estar utilizando un proxy transparente, ¿que diferencia hay entre establecer un socket con php a usar el navegador para acceder a una web?

Gracias por las respuestas
__________________
http://www.nosoynadie.net/
  #8 (permalink)  
Antiguo 27/06/2006, 10:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
En si no hay diferencia, lo que pasa es que un navegador, es un programa que crea un socket a nivel OS, al destino, si tu en el navegador le configuras un proxy, entonces el navegador ya sabe que tiene que usar primero el proxy antes de entrar a la direccion que le digas.

En PHP, tienes que hacer lo mismo, PHP, crea un socket a nivel OS, al destino, pero si en tu red nescesitas usar un proxy, por seguridad o por alguna otra razon, tienes que enseñarle a tu programa a primero navegar el proxy para ir al destino que requiere.
  #9 (permalink)  
Antiguo 27/06/2006, 10:17
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 19 años
Puntos: 1
GatorV, gracias por la explicación
__________________
http://www.nosoynadie.net/
  #10 (permalink)  
Antiguo 16/07/2008, 09:46
 
Fecha de Ingreso: abril-2008
Mensajes: 7
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: fopen y fsockopen

Cita:
Iniciado por GatorV Ver Mensaje
En si no hay diferencia, lo que pasa es que un navegador, es un programa que crea un socket a nivel OS, al destino, si tu en el navegador le configuras un proxy, entonces el navegador ya sabe que tiene que usar primero el proxy antes de entrar a la direccion que le digas.

En PHP, tienes que hacer lo mismo, PHP, crea un socket a nivel OS, al destino, pero si en tu red nescesitas usar un proxy, por seguridad o por alguna otra razon, tienes que enseñarle a tu programa a primero navegar el proxy para ir al destino que requiere.
Hola GatorV,

gracias por la explicación, que me ha servido a mí también. El caso es que yo necesito enseñar a mis aplicaciones PHP y/o ASP a "dirigirse" a ese proxy (con las credenciales correspondientes - user, pass, dominio-) para poder salir a internet. Y realmente no sé cómo debo hacerlo. El motivo es que deben consumir un WebService alojado en un servidor externo.

En .NET lo hago mediante la clase System.Net Proxy, que permite especificar precisamente el proxy al que debe dirigirse una aplicación para salir por él. Pero con ASP y PHP no sé cómo debo configurarlo/programarlo. Las páginas las estoy publicando en IIS 5.1 en local.

Si puedes ayudarme con este tema, te lo agradecería mucho ;)

Saludos
Juanjo
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 12:07.