Foros del Web » Programando para Internet » PHP »

Repetir código si la variable es nula.

Estas en el tema de Repetir código si la variable es nula. en el foro de PHP en Foros del Web. Hola, estoy trabajando en una araña con php y simple_html_dom. El problema es que cuando hago la solicitud a una web, no siempre me devuelve ...
  #1 (permalink)  
Antiguo 19/02/2011, 05:09
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 1 mes
Puntos: 6
Sonrisa Repetir código si la variable es nula.

Hola, estoy trabajando en una araña con php y simple_html_dom. El problema es que cuando hago la solicitud a una web, no siempre me devuelve respuesta y por tanto mi variable es nula. Lo que quiero es que vuelva a repetir la consulta hasta que la variable exista antes de seguir ejecutando el código.
Ejemplo de lo que tengo:
Código PHP:
// Url que quiero capturar

$url 'http://www.ejemplo.com';

// aqui uso el simple html dom

$html file_get_html($url); 
Despues viene mi codigo que es el siguiente:
Código PHP:
include_once("ejemplo.php");
include_once(
"ejemplo2.php"); 
Mi problema es que cuando no conecta y descarga la web, no sigue ejecutando el resto del programa y tengo que actualizar dos o tres veces hasta que consigue obtener $html ¿Alguna solución? Gracias!!!!
  #2 (permalink)  
Antiguo 19/02/2011, 08:52
 
Fecha de Ingreso: septiembre-2008
Mensajes: 350
Antigüedad: 15 años, 6 meses
Puntos: 31
Respuesta: Repetir código si la variable es nula.

Hola, no se si te he entendido bien el asunto; pero lo que entendí
se me ocurre una idea solo con php. porque también puedes usar una tarea programada para diferente horarios.
abajo te dejo un ejemplo para ver si lo acomodas a tu gusta

Código PHP:
<?php 
$self 
$_SERVER['PHP_SELF'];
$ifEmpty = (isset($_GET['e'])) ? $_GET['e'] : "";
if(
$ifEmpty ==""){
header"refresh:8;url=$self?e=conte" );
// o usar, header( "refresh:8;url=http://www.ejemplo.com/php-file.php?e=conte" );
echo 'STOP, Repetir consulta...';
}else{
echo 
'Continuar procesando el Resultado';
}
?>
eso te puede servir si no quieres procesar contenido nulo o
hacer que el file se auto refresh asta que obtenga contenido(como Tu lo mencionas)

puedes ver mas sobre empty

también puedes investigar mas sobre Ajax php

espero te sirva. o quizás alguien mas te de una mejor opción

-
__________________
╬-----╬
║☺₧☻║
╬-----╬
  #3 (permalink)  
Antiguo 19/02/2011, 09:15
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 1 mes
Puntos: 6
Respuesta: Repetir código si la variable es nula.

Gracias, lo pruebo y te digo algo.
  #4 (permalink)  
Antiguo 19/02/2011, 09:26
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 3 meses
Puntos: 89
Respuesta: Repetir código si la variable es nula.

Código PHP:
Ver original
  1. $html = null;
  2. do {
  3.    // Acá trato de obtener el contenido del sitio...
  4.    $html = file_get_html('sitio.com');
  5. } while(is_null($html));

Se me ocurre algo así.

Saludos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 19/02/2011, 09:28
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 1 mes
Puntos: 6
Respuesta: Repetir código si la variable es nula.

Jeje, la verdad es que no lo consigo entender. Llevo un mes con php, y voy a prendiendo a medida que voy necesitando cosas. ¿Serías tan amable de juntar tu código con el mío? Así lo entenderé mejor.
Mis líneas de código son las que he posteado antes, en ejemplo1 y 2 se utiliza $html. Gracias otra vez.
  #6 (permalink)  
Antiguo 19/02/2011, 09:30
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 1 mes
Puntos: 6
Respuesta: Repetir código si la variable es nula.

Gracias spider_boy lo pruebo ensiguida, ya tengo echo todo el resto para mi screenscraping, ahora me falta resolver algunas cosas. Lo pruebo y te digo.
  #7 (permalink)  
Antiguo 19/02/2011, 09:39
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 1 mes
Puntos: 6
Respuesta: Repetir código si la variable es nula.

con el codigo de spider obtengo esto si no la capta a la primera:

PHP Fatal error: Call to a member function find() on a non-object in /****/ejemplo1.php on line 14

Por tanto asi tal cual no funciona lo que he hecho es esto:
Código PHP:
$url'http://www.examplesite.com';
$html null;
do { 
// Acá trato de obtener el contenido del sitio...
$html file_get_html($url);
} while(
is_null($html));


include_once(
"ejemplo1.php");

include_once(
"ejemplo2.php"); 
Y me lanza ese eroor, alguna idea? no debría insertar lo que tiene que hacer dentro del while o algo parecido? Gracias,
  #8 (permalink)  
Antiguo 19/02/2011, 09:40
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 3 meses
Puntos: 89
Respuesta: Repetir código si la variable es nula.

¿Podrías postear el código que tiene la función file_get_html, el código de ejemplo1.php y ejemplo2.php?
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #9 (permalink)  
Antiguo 19/02/2011, 09:47
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 1 mes
Puntos: 6
Respuesta: Repetir código si la variable es nula.

aquí la función
Código PHP:
function file_get_html() {
    
$dom = new simple_html_dom;
    
$args func_get_args();
    
$dom->load(call_user_func_array('file_get_contents'$args), true);
    return 
$dom;

aqui una parte del codigo de ejemplo 1 y 2 donde me da el error

Código PHP:
$contenedor $html->find('[id=mecalist] #front'); 
realmente mi script se compone de 30 scripts que se ejecutan usando la variable $html, lo pongo asi para resumir si no se hace eterno. gracias

Por cierto cuando en el firefox actualizo para probar otra vez a la segunda o cuarta funciona
  #10 (permalink)  
Antiguo 19/02/2011, 09:53
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 1 mes
Puntos: 6
Respuesta: Repetir código si la variable es nula.

Cita:
Iniciado por thezzin Ver Mensaje
Hola, no se si te he entendido bien el asunto; pero lo que entendí
se me ocurre una idea solo con php. porque también puedes usar una tarea programada para diferente horarios.
abajo te dejo un ejemplo para ver si lo acomodas a tu gusta

.....

-
Creo que los tiros van por aqui tambien. es lo que dices que no entiendo tu codigo. quiero que no ejecute los inlude_once hasta que $html tenga contenido
  #11 (permalink)  
Antiguo 20/02/2011, 05:01
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 1 mes
Puntos: 6
De acuerdo [b]solucionado repetir si la variable es nula[/b]

Al final lo he solucionado así, espero que os sirva:
Código PHP:
include("scripts/simple_html_dom.php");

$url'http://www.ejemplo.com';


$contents get_file_contents($url);


function 
get_file_contents($url)
{
$Tries 0;
do
{
if (
$Tries 0sleep(1); # Wait for a sec before retrieving again
$contents = @file_get_contents($url);
$Tries++;
} while (
$Tries <= && $contents === FALSE);
if (
$contents == ""$contents FALSE;
return 
$contents;
}
//Aqui convierto el string obtenido en un objeto DOM para tratarlo con simple html dom.

$html str_get_html($contents); 

Etiquetas: repetir, variables
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 00:58.