Foros del Web » Programando para Internet » PHP »

PHP OO Tengo un error y no sé cual es

Estas en el tema de Tengo un error y no sé cual es en el foro de PHP en Foros del Web. Bueno, soy nuevo en esto del POO, e intente hacer mi primer script en esta tipo de sintaxis. El script lo que hace es sacar ...
  #1 (permalink)  
Antiguo 08/10/2010, 13:56
 
Fecha de Ingreso: abril-2010
Ubicación: Argentina
Mensajes: 57
Antigüedad: 14 años, 7 meses
Puntos: 1
Tengo un error y no sé cual es

Bueno, soy nuevo en esto del POO, e intente hacer mi primer script en esta tipo de sintaxis.

El script lo que hace es sacar los datos de una radio.

Código PHP:
<?php
class Radio
{
    private 
$ip;
    private 
$port;
    private 
$timeout;
    private 
$fp=@fsockopen($ip,$port,$errno,$errstr,$timeout);
    
    public function 
__construct($ip,$port)
    {
        
$this->ip=$ip;
        
$this->port=$port;
        
$this->timeout=30;
    }
    
    public function 
info()
    {
        if(
$this->fp)
        {
            
fputs($this->fp,'GET /7.html HTTP/1.0\r\n\r\n');
            while(!
feof($this->fp))
            {
                
$info=fgets($this->fp);
            }
            list(
$listeners,$status,$maxonline,$maxslots,$nose,$calidad,$song)=explode(',',$info);
            echo 
'<p>'.$this->listeners.'</p>';
            echo 
'<p>'.$this->status.'</p>';
            echo 
'<p>'.$this->maxonline.'</p>';
            echo 
'<p>'.$this->maxslots.'</p>';
            echo 
'<p>'.$this->calidad.'</p>';
            echo 
'<p>'.$this->song.'</p>';
        }
        else
        {
            
'<p>Error al intentar conectar con la radio</p>';
        }
    }
}
$radio=new Radio(64.34.187.144,8080);
$radio->info();
?>
Seguro tengo muchos. MUCHISIMAS GRACIAS.
  #2 (permalink)  
Antiguo 08/10/2010, 14:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Tengo un error y no sé cual es

el primer error que cometes es pensar en que somos adivinos... y que por alguna razón podríamos descubrir tu error...

sin embargo hay una forma sencilla de evitar esto:
Código PHP:
error_reporting(E_ALL);
ini_set('display_errors'1);
# tu codigo.... 
si agregas estas lineas al inicio de tu script, y lo ejecutas de nuevo te apuesto a que descubrirás un mensaje de error.... el cual, debes mostrarnos completamente...

y de verdad, si ya tienes un mensaje de error previo a esto no dudes en colocarlo ya que ahorra mucho trabajo...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/10/2010, 14:09
 
Fecha de Ingreso: abril-2010
Ubicación: Argentina
Mensajes: 57
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Tengo un error y no sé cual es

Cita:
Iniciado por pateketrueke Ver Mensaje
el primer error que cometes es pensar en que somos adivinos... y que por alguna razón podríamos descubrir tu error...

sin embargo hay una forma sencilla de evitar esto:
Código PHP:
error_reporting(E_ALL);
ini_set('display_errors'1);
# tu codigo.... 
si agregas estas lineas al inicio de tu script, y lo ejecutas de nuevo te apuesto a que descubrirás un mensaje de error.... el cual, debes mostrarnos completamente...

y de verdad, si ya tienes un mensaje de error previo a esto no dudes en colocarlo ya que ahorra mucho trabajo...
No me muestra nada, queda toda la pantalla en blanco. Esto sucede tanto en mi servidor dedicado como en mi servidor pago.

Voy a intentar subir a un host gratuito y edito.
  #4 (permalink)  
Antiguo 08/10/2010, 14:47
 
Fecha de Ingreso: abril-2010
Ubicación: Argentina
Mensajes: 57
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Tengo un error y no sé cual es

Bueno, ahora ya no tengo mas error, pero de igual manera no printea nada. ANDA, pero no printea el metodo info();

Codigo reeditado:

Código PHP:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'1); 
class 
Radio
{
    private 
$ip;
    private 
$port;
    private 
$timeout;
    private 
$fp;
    
    public function 
__construct($ip,$port)
    {
        
$this->ip=$ip;
        
$this->port=$port;
        
$this->timeout=30;
        
$this->fp=@fsockopen($ip,$port,$errno,$errstr,$timeout);
    }
    
    public function 
info()
    {
        if(
$this->fp)
        {
            
fputs($this->fp,'GET /7.html HTTP/1.0\r\n\r\n');
            while(!
feof($this->fp))
            {
                
$info=fgets($this->fp);
            }
            list(
$listeners,$status,$maxonline,$maxslots,$nose,$calidad,$song)=explode(',',$info);
            echo 
'<p>'.$this->listeners.'</p>';
            echo 
'<p>'.$this->status.'</p>';
            echo 
'<p>'.$this->maxonline.'</p>';
            echo 
'<p>'.$this->maxslots.'</p>';
            echo 
'<p>'.$this->calidad.'</p>';
            echo 
'<p>'.$this->song.'</p>';
        }
        else
        {
            
'<p>Error al intentar conectar con la radio</p>';
        }
    }
}
$radio=new Radio('64.34.187.144',8080);
$radio->info();
?>
PERDÓN por el doble post. No me di cuenta.

Última edición por elfeme; 08/10/2010 a las 14:54
  #5 (permalink)  
Antiguo 08/10/2010, 15:14
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 15 años, 1 mes
Puntos: 6
Respuesta: Tengo un error y no sé cual es

Fijate que el while tal como lo tenes, te va a almacenar un resultado solo porque no estas creando un array.
Código PHP:
Ver original
  1. while(!feof($this->fp))
  2.             {
  3.                 $info=fgets($this->fp);
  4.             }
  5.  
  6.  
  7. //deberia ser
  8. while(!feof($this->fp))
  9.             {
  10.                 $info[]=fgets($this->fp);
  11.             }
  #6 (permalink)  
Antiguo 08/10/2010, 15:24
 
Fecha de Ingreso: abril-2010
Ubicación: Argentina
Mensajes: 57
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Tengo un error y no sé cual es

Cita:
Iniciado por principianteZF Ver Mensaje
Fijate que el while tal como lo tenes, te va a almacenar un resultado solo porque no estas creando un array.
Código PHP:
Ver original
  1. while(!feof($this->fp))
  2.             {
  3.                 $info=fgets($this->fp);
  4.             }
  5.  
  6.  
  7. //deberia ser
  8. while(!feof($this->fp))
  9.             {
  10.                 $info[]=fgets($this->fp);
  11.             }
Actualize eso, pero aun asi sigue sin imprimir.
  #7 (permalink)  
Antiguo 08/10/2010, 15:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Tengo un error y no sé cual es

yo mismo acabo de hacer la prueba usando sockets y no lee nada, sin embargo si carga la URL directamente (http://64.34.187.144:8080/7.html) si que obtengo algo en el navegador!!

te sugiero que pruebes en hacer la misma implementación pero ahora usando cURL, si buscas en el foro seguro encontraras buenos aportes al respecto..
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 08/10/2010, 15:43
 
Fecha de Ingreso: abril-2010
Ubicación: Argentina
Mensajes: 57
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Tengo un error y no sé cual es

Cita:
Iniciado por pateketrueke Ver Mensaje
yo mismo acabo de hacer la prueba usando sockets y no lee nada, sin embargo si carga la URL directamente (http://64.34.187.144:8080/7.html) si que obtengo algo en el navegador!!

te sugiero que pruebes en hacer la misma implementación pero ahora usando cURL, si buscas en el foro seguro encontraras buenos aportes al respecto..
Que raro, porque primero lo hice de forma estructurada y me andaba, intente pasarlo a POO y dejo de andar.
  #9 (permalink)  
Antiguo 09/10/2010, 23:44
Avatar de bng5  
Fecha de Ingreso: junio-2009
Ubicación: 127.0.0.1
Mensajes: 269
Antigüedad: 15 años, 5 meses
Puntos: 24
Respuesta: Tengo un error y no sé cual es

El principal problema que veo es que estás usando caracteres de escape dentro de comillas simples, no funcionan las secuencias de escape dentro de comillas simples, cambialas por comillas dobles.

La variable $timeout no está definida, usá $this->timeout en su lugar.

Código PHP:

    
//fputs($this->fp, 'GET /7.html HTTP/1.0\r\n\r\n');
    
fputs($this->fp"GET /7.html HTTP/1.0\r\n\r\n");


    
$this->timeout=30;
    
//$this->fp = fsockopen($ip, $port, $errno, $errstr, $timeout);
    
$this->fp fsockopen($ip$port$errno$errstr$this->timeout); 

Etiquetas: Ninguno
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 22:45.