Foros del Web » Programando para Internet » PHP »

Problema con contador

Estas en el tema de Problema con contador en el foro de PHP en Foros del Web. ¡Muy buenas! Utilizo un contador en una web cuyo código es el siguiente: Código: <? $contador="contador.php"; $visitas = file($contador); $visitas2 = $visitas[0]; $visitas2++; $fp = ...
  #1 (permalink)  
Antiguo 18/11/2005, 19:40
 
Fecha de Ingreso: febrero-2002
Mensajes: 59
Antigüedad: 22 años, 2 meses
Puntos: 0
Pregunta Problema con contador

¡Muy buenas!

Utilizo un contador en una web cuyo código es el siguiente:

Código:
<?
  $contador="contador.php";
  $visitas = file($contador);
  $visitas2 = $visitas[0];
  $visitas2++;
  $fp = fopen($contador,"w");
  fwrite($fp,$visitas2); 
  fclose($fp);
  printf("<p align=center><font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\">[<b>" . $visitas2 . "</b> visitas]</font></p>");
?>
El archivo "contador.php" contiene un número que se incrementa cada vez que se recarga la página. Funciona correctamente, pero... resulta que, a veces, se cambia el número sin motivo aparente. Por ejemplo, ayer iba por 5000 y pico, y hoy estaba en 37. El archivo contador.php tiene permisos 644.

¿Qué puede ocurrir? Gracias
__________________
Gatorrollo
http://www.diegoml.com
  #2 (permalink)  
Antiguo 20/11/2005, 03:28
 
Fecha de Ingreso: febrero-2002
Mensajes: 59
Antigüedad: 22 años, 2 meses
Puntos: 0
Echadme una manita...
__________________
Gatorrollo
http://www.diegoml.com
  #3 (permalink)  
Antiguo 24/02/2006, 13:19
 
Fecha de Ingreso: febrero-2002
Mensajes: 59
Antigüedad: 22 años, 2 meses
Puntos: 0
¿Nadie sabe a qué puede deberse? Sigue pasándome que se reinicia sólo o incluso deja de funcionar al borrarse el contenido del archivo.
__________________
Gatorrollo
http://www.diegoml.com
  #4 (permalink)  
Antiguo 24/02/2006, 16:18
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Esto suele ocurrir cuando dos usuarios intentan escribir y/o leer en el archivo en cuestión simultáneamente. Por lo general queda un valor que no es el correcto en el archivo de texto.
La solución definitiva a este problema es que tu aplicación guarde ese conteo en una base de datos, en la cual estos bloqueos se gestionan de manera automática (depende también tu motor de base de datos y el tipo de tabla que utilices).

Si decides seguir utilizando archivos, te recomiendo que bloquees su uso cuando se realiza un acceso. Pegale un vistazo a http://www.php.net/manual/en/function.flock.php

Saludos.
__________________
R4DS en español | R4DS en inglés
  #5 (permalink)  
Antiguo 02/03/2006, 09:53
 
Fecha de Ingreso: febrero-2002
Mensajes: 59
Antigüedad: 22 años, 2 meses
Puntos: 0
¡Muchas gracias!
__________________
Gatorrollo
http://www.diegoml.com
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:22.