Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] incrementar valor de php cada cierto tiempo

Estas en el tema de incrementar valor de php cada cierto tiempo en el foro de PHP en Foros del Web. hola Necesito incrementar valor de php cada cierto tiempo, he buscado y rebuscado pero no doy con la tecla Ayudenme por favor. Lo que quiero ...
  #1 (permalink)  
Antiguo 12/09/2014, 20:31
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 9 meses
Puntos: 1
incrementar valor de php cada cierto tiempo

hola

Necesito incrementar valor de php cada cierto tiempo,

he buscado y rebuscado pero no doy con la tecla

Ayudenme por favor.

Lo que quiero es aumentar $i++ cada 15 segundos

Un saludo
Gracias de antemano
  #2 (permalink)  
Antiguo 12/09/2014, 22:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: incrementar valor de php cada cierto tiempo

Recuerda que PHP se ejecuta de manera "stateless" de modo que no tienes manera de hacer esto de manera asíncrona como lo podrías hacer con Javascript.

Ahora, si bien puedes hacer un setInterval() en Javascript que haga una llamada Ajax hacia un script en PHP que incremente dicha variable pero necesitas usar sesiones, etc.

Investiga al respecto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/09/2014, 06:06
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: incrementar valor de php cada cierto tiempo

Muchas gracias por tu respuesta,
el problema es que no me llevo muy bien con javascript.

Dandole vueltas se me ocurre una cosa que creo que deberia de ser posible yo no consigo hacerlo pero no debe de ser muy complicado.

bueno mejor pego el codigo que creo que se entendera la idea

No me pegueis si veis alguna barbaridad acontinuacion:

Código PHP:
for($hora $hora 61 $hora=date('s')){
    for (
$i=$i<&& $hora =    20$i++);

  #4 (permalink)  
Antiguo 13/09/2014, 06:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: incrementar valor de php cada cierto tiempo

Creo que no entendiste el término "stateless" que te comentó @paketetrueke, ¿no?
El tema es que PHP no maneja estados, trabajas de forma asíncrona, por lo qu elo que hagas en el Cliente, el tiempo que transcurre en una sesion de una aplicación, no se refleja en ningun momento en los estados del servidor.
No puedes implementar algo como lo que quieres con PHP puro.

Por otro lado, que te lleves mal con JavaScript no es una razón para no profundizarlo, si lo que quieres realmente es conseguir plasmar tu proyecto. No te justifiques con falta de experiencia en un lenguaje, usa eso para aprenderlo más.
Es lo que hacemos todos acá: Aprendemos lo que necesitamos.

Y tu estás necesitando algo que requiere de Ajax, por ende, de JavaScript.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 14/09/2014, 02:26
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: incrementar valor de php cada cierto tiempo

Hola

Entendi lo que me quiso decir , pero no que propongo no es que php sepa el tiempo transcurrido. sino un bucle que ejecute la funcion
Código PHP:
date('s'
hasta que el valor sea 59. entonces en el bucle de incremento de la variable decir que solo se ejecute el incremento cuando el valor
Código PHP:
date('s'
sea 15, 30 , 45 , 00.

Al fin y al cabo date('s') es un numero que se puede guarda como variable.

No se si me explico.

Ya se que hay que aprender lo que se necesita , pero me gusta buscar otras soluciones. Cada error es una cosa aprendida y se aprende mas y mejor cuando deliberas sobre posibles soluciones en lugar de buscar un codigo ya hecho.

Un saludo
  #6 (permalink)  
Antiguo 14/09/2014, 06:37
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: incrementar valor de php cada cierto tiempo

Vamos a ver de nuevo si se entiende...
Si quieres hacer ese proceso, de modo que corra automáticamente y en forma constante, intentalo. Pero no esperes que desde el navegador el usuario tenga acceso a ese valor, ni que lo pueda recuperar y usar. No sucederá.
En esencia, estás corriendo en dos ambientes separados e independientes, sin canal de comunicación, dos tareas separadas. Si quieres que una (el cliente, el navegador) se entere de lo que pasa en el servidor (host), tienes que usar algo que los comunique, por ejemplo, Ajax.
De lo contrario, lo que pretendes hacer no sirve para nada, porque no lo podrás ver.

¿Queda más claro?

Si no estableces una comunicación bidireccional entre ambas cosas, es inutil. Como mucho lograrás que el proceso se interrumpa hasta que la variable tenga un valor dado que envie la respuesta al navegador, o bien que salga por timeout.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 14/09/2014, 07:43
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: incrementar valor de php cada cierto tiempo

Gracias por la repuesta.

He estado realizando pruebas , y no funciona debido a que el valor de los segundos se repita yo no se cuantas mil veces , entre un segundo y el siguiente, entonces cuando llega a 20 o al valor que sea el valor a incrementar se incrementa esas tantas miles de veces.
HE probado incluso usando milisegundos y ocurre lo mismo, en ese milisegundo se increnta muchisimas veces.

Pues al final no me va a quedar mas remedio que pelearme con javascript.
y pasar de alguna forma esa variable al codigo php.

Muchas gracias a todos, realizare las pruebas y os comento como ha ido
  #8 (permalink)  
Antiguo 14/09/2014, 09:04
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: incrementar valor de php cada cierto tiempo

he estado intentadolo con js y no tengo ni zorra de como pasar el resultado de la funcion a php

A ver me podeis ayudar

tengo lo siguiente
Código PHP:
    $divContenedor $html->find('div.tabwrapB',$k);
//donde la $k es el valor que deberia de ir aumentando 
Y en js tengo esto :
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. var cont = 0;
  3. function contador(){
  4.     var contador = document.getElementById("contador");
  5.     contador.value = cont;
  6.     if(cont < 2){
  7.     cont++;}
  8. }
  9. document.write (setInterval('contador()',15000))
  10. </script>

Como podria unir ambas cosas

Gracais desde ya
  #9 (permalink)  
Antiguo 14/09/2014, 09:24
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años, 8 meses
Puntos: 5
Respuesta: incrementar valor de php cada cierto tiempo

Perdona pero ¿qué quieres conseguir? Danos una ayudita para entender el propósito del código y seguro que alguien te da una mejor solución. No en términos de variables sino más amplio, por ejemplo que la página se recargue cada 5 segundos, o que se vuelva a buscar un precio cada 5 segundos...
  #10 (permalink)  
Antiguo 14/09/2014, 09:42
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: incrementar valor de php cada cierto tiempo

Ok, pues mira estamos trabajando con simple html dom

Y estamos parseando una web .

Pues bien , esta web se sobrecarga rapido y tira errores si se parsean muchas paginas a la vez

pues lo que quiero es que no se visiten todas las URL a la vez si no que haya un intervalo de tiempo entre la carga de un enlace y el siguiente, para evitar que pete la pagina de la que se toman los datos

hos dejo las dos funciones que tengo:
Código PHP:
function getTodosLinksProductos(){
    
$todosLinks = array();
        for(
$k=1;$k<2;$k++){//462
    
$html file_get_html(URL_LAPTOP.'/modelsearch.php?order=panel_id&by=desc&page='.$k);

    foreach (
$html->find('div.con_list') as $div){        
        foreach(
$div->find('form') as $form){
            foreach(
$form->find('tr') as $tr){
                foreach(
$tr->find('td') as $td){

                    foreach(
$td->find('a') as $enlace){
                        if (
preg_match('/Specification/i',$enlace->title) && $enlace->href != ""){
                            
                
$todosLinks[] = URL_LAPTOP.$enlace->href;
                        }}
         }}}}
    }

    
$html->clear();
    unset(
$html);
    
    return 
$todosLinks;
}
function 
conseguirtexto($enlace){
    
$valor = array();
    
$html file_get_html($enlace);
        
    for(
$k=0;$k<9;$k++){
    
$divContenedor $html->find('div.tabwrapB',$k);
    if(
$divContenedor == null){
        
$divContenedor $html->find('div.tabwrapB');
        foreach(
$divContenedor as $div){
        foreach(
$div->find('th') as $campo){
            
$descripcion[] = "<p>".$campo->plaintext;
        }
        
$cont 0;
        foreach(
$div->find('td') as $campo){
            if( 
$campo->plaintext != ''){
            
$descripcion[$cont] .=  "|".$campo->plaintext."</p>";
            if(
$cont == 0)
                
            +
$cont;}if( $campo->plaintext == ''){
            foreach(
$campo->find('img') as $img){
                    
$descripcion[$cont] .=  "|".$img->title."</p>";
            if(
$cont == 0)
                
            +
$cont;}}if( $campo->plaintext != ''){
            foreach(
$campo->find('img') as $img){
                    
$descripcion[$cont] .=  "|".$img->title."</p>";
            if(
$cont == 0)
                
            +
$cont;}}
        }
    } }
    else{
        
        foreach(
$divContenedor->find('tr') as $campo){
            
$descripcion[] = '';
            
$cont 0;
        foreach(
$campo->find('th') as $th){
            
            
$descripcion[$cont] .= '<p>'.$th->plaintext;
            if(
$cont == 0)
                
            +
$cont;}
            foreach(
$campo->find('td') as $td){
            if( 
$td->plaintext != ''){
            
$descripcion[$cont] .=  $td->plaintext.'</p>';
            if(
$cont == 0)
                
            +
$cont;}if( $td->plaintext == ''){
            foreach(
$td->find('img') as $img){
                    
$descripcion[$cont] .=  $img->title.'</p>';
            if(
$cont == 0)
                
            +
$cont;}}if( $td->plaintext != ''){
            foreach(
$td->find('img') as $img){
                    
$descripcion[$cont] .= $img->title.',';
            if(
$cont == 0)
                
            +
$cont;}}
        }
        }
        
        
    } }
//&le; 
    
$valor str_replace ('≥','&ge;',str_replace ('×','&times;',$descripcion[$cont]));
     
//$valor = substr($valor2,0,-1);
     
    
    
    
return $valor;



Me acabo de dar cuenta que lo que pregunto serviria para la primera funcion pero no para la segunda.
Me podeis dar otra idea,para el segundo caso?

Muchas gracias un saludo
  #11 (permalink)  
Antiguo 14/09/2014, 11:07
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años, 8 meses
Puntos: 5
Respuesta: incrementar valor de php cada cierto tiempo

Estás buscando por el lado equivocado. PHP no hace nada simultáneo que recargue el sistema, simplemente el bucle es demasiado largo e incluye una función medio lenta file_get_html. Probablemente el script supere el tiempo máximo de respuesta.
Si haces una pausa se va a demorar todavía más, para eso existe la función sleep($segundos), pero no la uses, no te va a servir.

Lo que veo es que la única solución posible es la que plantea gnzsoloyo más arriba, e implica que tienes que armarte de paciencia, unos cafecitos y aprender a hacer llamadas Ajax. Esto significa que tienes que crear una página simple con código javascript que:
-llama por ajax a una página de php, por ejemplo 'parsea_el_1.php'
-recibe la respuesta de 'parsea_el_1.php'
-si la respuesta es 'continuemos' o algo así, llama a 'parsea_el_2.php', etc. ,etc...
-si la respuesta es 'terminamos' avisa en pantalla que todo está ok.
O sea, le vas pidiendo a php que trabaje de a trocitos, y la página inicial puede estar horas si quieres, funcionando y avisando "vamos en el archivo 15.400..."
Los detalles son muchos para detallarlos en el foro, busca documentación googleando "PHP Ajax".
  #12 (permalink)  
Antiguo 14/09/2014, 16:13
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: incrementar valor de php cada cierto tiempo

hola gracias por la respuesta, pero el problema te aseguro que es de la pagina que estoy parseando, ya que he trasteado mucho por ella y muchas veces cuando abres muchas ventanas a la vez la pagina tira un error 500.

de hecho mira el error que me tira (unas veces me lo tira unas veces habiendo ejecutado 10 y otras habiendo ejecutado 20)
Warning: file_get_contents(http://www.panelook.com/V500HJ3-PE1_Innolux_50_CELL_parameter_23252.html): in C:\xampp\htdocs\panelook\mia_parser\helpers\simple _html_dom.php on line 27

segun entiendo el error de arriba dice que la URL no se puede, y el error de abajo es consecuencia del anterior , corrigirme si me equivoco

Fatal error: Call to a member function find() on a non-object in C:\xampp\htdocs\panelook\mia_parser\helpers\mia_he lper.php on line 39

Gracias de nuevo
  #13 (permalink)  
Antiguo 14/09/2014, 16:58
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años, 8 meses
Puntos: 5
Respuesta: incrementar valor de php cada cierto tiempo

Trata de acceder al registro de errores de tu aplicación. Debería estar en \xampp\apache\logs\error.log, o lo puedes averiguar con phpinfo().
Ahí busca en qué consiste el dichoso error 500.
  #14 (permalink)  
Antiguo 14/09/2014, 17:15
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: incrementar valor de php cada cierto tiempo

Este es el unico error que encuentro y se encuentra en el access.log

::1 - - [15/Sep/2014:01:11:52 +0200] "GET /panelook/mia_parser/obtener_productos.php HTTP/1.1" 200 15414 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"


en el error.log no hay nada

La verdad que no tengo ni idea de lo que quiere decir, a ver si tu descubres algo
  #15 (permalink)  
Antiguo 14/09/2014, 17:55
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años, 8 meses
Puntos: 5
Respuesta: incrementar valor de php cada cierto tiempo

No, ese no es un error.
Tenía la esperanza de que Apache especificara el error 500, en mi servidor sí lo hace.

Prueba con sleep() entonces.

Al final del bucle for

Código PHP:
Ver original
  1. for($k=1;$k<2;$k++){
  2.     // etc. etc...
  3.  
  4.     sleep(3);
  5. }
  6.     $html->clear();
  7.     unset($html);
  8.    
  9.     return $todosLinks;
  #16 (permalink)  
Antiguo 15/09/2014, 07:48
 
Fecha de Ingreso: febrero-2013
Mensajes: 21
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: incrementar valor de php cada cierto tiempo

nada que no hay manera.

Voy ha hacer un par de preguntas a ver si por hay se puede llegar a lo que quiero.

1.- se podria hacer el sleep entre la recogida de un enlace y el siguiente. por que lo que creo que pasa es que el valor todos link ya lleva todos los enlaces y pasarle el valor a la funcion conseguirtexto esta habre todos los enlaces a la vez y esto es lo que provoca el fallo

Código PHP:
    // aqui     
        
$todosLinks[] = URL_LAPTOP.$enlace->href;
                        }}

// o hacer el sleep
function conseguirtexto($enlace){ 
2.- la segunda pregunta, estuve hablando con un progamador profesional para que me hiciera esto (esto es parte de un proyecto mayor) y el precio que me dio se iva de mis posibilidades.
Bueno pues este programador me comento algo de que para hacer la araña que fuera recogiendo los datos ( al ver que la pagina tiraba errores muy amenudo) lo haria como si la araña fuera una persona , es decir me dirijo a un enlace lo parseo, cuando termino voy al siguiente ,y asi sucesivamente ,¿ seria posible harcerlo asi?

Un saludo
Y muchas gracias , especialmente a rodrigo.

Etiquetas: cada, incrementar, tiempo, valor
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 20:18.