Foros del Web » Programando para Internet » PHP »

Contador Sencillo

Estas en el tema de Contador Sencillo en el foro de PHP en Foros del Web. Hace algo me bajo un codigo en php para crear un contador sencillo. El codigo no es complicado y lo unico que hace es cambiar ...
  #1 (permalink)  
Antiguo 15/06/2003, 08:47
Avatar de Zeroneo  
Fecha de Ingreso: abril-2003
Mensajes: 62
Antigüedad: 14 años, 8 meses
Puntos: 0
Contador Sencillo

Hace algo me bajo un codigo en php para crear un contador sencillo. El codigo no es complicado y lo unico que hace es cambiar los numeros en un txt para luego llamar a las imagenes correspondientes. Al principio funcionaba perfectamente sin ningun problema. Pero de repente se reiniciaba desde 0. El problema no creo que este en el codigo, si no en el archivo txt, que de vez en cuando se borrar el contenido, y claro el contador tb empieza desde 1.

La verdad es que no teniendo mucha idea de php tampoco estoy convencido de que sea ese el problema y lo peor es que no tengo ni idea de como arreglarlo. Les dejo aqui el codigo porsiacaso haber si me pueden ayudar.

Código PHP:
<?php
$counterFile 
=  "servicios/counter/counter.txt";
$maxlen 6;
$imgdir =  "servicios/counter/";

function 
displayCounter($counterFile) {
  global 
$imgdir$maxlen;

    
$fp   fopen($counterFile,rw);
    
$num  fgets($fp,$maxlen);
    
$num += 1;

    for (
$i=0$i<strlen($num); $i++) {
        
$val substr($num$i1);
        
$imgstring $imgstring .  "<img src=$imgdir$val.gif>";
    }
            
    print  
"$imgstring";
    
    
$fp   fopen($counterFile,w);
  
fputs($fp,$num);
    
fclose($fp);

}

if (!
file_exists($counterFile)) {
   
$num 0;
   
fputs($fp,$num);
}
displayCounter($counterFile);
?>
Muchas gracias.
  #2 (permalink)  
Antiguo 15/06/2003, 09:19
Avatar de ProgramacionWeb  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona
Mensajes: 176
Antigüedad: 14 años, 5 meses
Puntos: 2
Pues he mirado el código y no veo nada raro, el problema puede ser que en tu web uses otro codigo que te borre ese archivo o que lo borres sin querer, no se
__________________
Foros en los que participo:
  #3 (permalink)  
Antiguo 15/06/2003, 09:30
Avatar de Zeroneo  
Fecha de Ingreso: abril-2003
Mensajes: 62
Antigüedad: 14 años, 8 meses
Puntos: 0
No tengo ningun otro codigo que llame o toque el archivo .txt . He estado pensando y eso no me sucede cuando lo uso en el ordenador. Me suele pasar sobretodo cuando la pagina se carga a medias, que la proxima vez aparece en 0. ¿Puede deverse a que al codigo le de tiempo a borrar el numero anterior pero no a reescribirlo?
  #4 (permalink)  
Antiguo 15/06/2003, 09:38
Avatar de ProgramacionWeb  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona
Mensajes: 176
Antigüedad: 14 años, 5 meses
Puntos: 2
No creo, porque cuando se ejevuta el código php se ejecuta del tiron, el problema aparece cuando dos visitantes ejecutan el contador a la vez, entonces si el primero esta escribiendo, el segundo lee 0 (porque no puede leer mientras otro escribe) , le suma 1 y escribe 1
__________________
Foros en los que participo:
  #5 (permalink)  
Antiguo 15/06/2003, 11:36
Avatar de camargo  
Fecha de Ingreso: abril-2002
Ubicación: Kerétaro, Méjiko
Mensajes: 1.045
Antigüedad: 15 años, 8 meses
Puntos: 2
Aki tengo un script:
http://www.hotmex.com/phpscripts

Si kieres, claro, probar otras opciones

Salu2
__________________
http://www.chorcha.com
  #6 (permalink)  
Antiguo 15/06/2003, 13:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm Ese modo de fopen()
$fp = fopen($counterFile,rw);

rw (y sin comillas .. pues la definición de fopen dice que ese parámetro es un "string" y no una constante) no lo conozco .. Deberías usar "a" y "w" respectivamente.. El caso que en ese modo .. si el archivo no se ha podido leer .. se va a crear un nuevo archivo .. Así que si tu servidor tiene problemas de lectura de ese archivo en algún instante .. se va a crear uno nuevo.

fopen()
http://www.php.net/manual/en/function.fopen.php

Ese problema .. ademas del de la "concurrencia" (dos o mas usuarios intentando interactuar sobre ese archivo a la vez) son los problemas de trabajar con archivos de texto plano ..

De todas formas .. tienes unas funciones por ahí para bloquear tu archivo que estas trabajando cuando estas escribiendo en el ..

flock()
http://www.php.net/manual/en/function.flock.php


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 12:37.