Foros del Web » Programando para Internet » PHP »

problemas con contador de visitas

Estas en el tema de problemas con contador de visitas en el foro de PHP en Foros del Web. Hola amigos, soy nuevo en esto del php y me encontré con el siguiente problema: mi contador de visitas funcionó correctamente mucho tiempo, pero de ...
  #1 (permalink)  
Antiguo 28/03/2004, 11:53
 
Fecha de Ingreso: marzo-2004
Ubicación: Córdoba
Mensajes: 23
Antigüedad: 13 años, 8 meses
Puntos: 0
problemas con contador de visitas

Hola amigos, soy nuevo en esto del php y me encontré con el siguiente problema: mi contador de visitas funcionó correctamente mucho tiempo, pero de repente se reseteó y empezó desde 0. Puede ser algún ataque a mi archivo visitas.txt? La verdad estoy desconcertado. Me pueden ayudar con esto? Desde ya un gran saludo y agradecimiento a todos uds por su ayuda.
__________________
Cristian
  #2 (permalink)  
Antiguo 17/04/2004, 09:16
 
Fecha de Ingreso: marzo-2004
Ubicación: Córdoba
Mensajes: 23
Antigüedad: 13 años, 8 meses
Puntos: 0
Amigos, logré encontrar el problema del contador que se resetea a 0, y es que cuando dos usuarios entran en el mismo momento a la página y el contador intenta grabar el incremento, si el archivo no está bloqueado, se trunca y por eso aparece en 0.
Hasta Pronto!!
__________________
Cristian
  #3 (permalink)  
Antiguo 17/04/2004, 09:45
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
claro, pq usas ficheros de texto plano, lo suyo es usar una base de datos, para que eso no pase.... en ficheros... si 1 lo abre... y luego entra otro y lo abre... despues... el 1 al cerrar, no cerrara.. pq otro user lo tiene abierto y asi sucesivamente... si dio la casualidad que entraron 20 a la vez... pues el server peto! y corrompio el fichero dejandolo a 0
__________________
3w.valenciadjs.com
3w.laislatv.com
  #4 (permalink)  
Antiguo 20/04/2004, 13:22
 
Fecha de Ingreso: marzo-2004
Ubicación: Córdoba
Mensajes: 23
Antigüedad: 13 años, 8 meses
Puntos: 0
Gracias por tu aclaración con respecto a los archivos de texto plano. ¿En una base de datos eso se gestiona automáticamente?
Por otro lado en mi hosting me cobran para tener acceso a BD por eso creo que no tengo alternativa que resolver con archivos txt. De nuevo muchas gracias.
__________________
Cristian
  #5 (permalink)  
Antiguo 20/04/2004, 14:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno . tanto en archivos de texto plano como en base de datos tienes métodos para bloquear tablas/registros en operaciones "atómicas" (leer un dato para incrementarlo) ..

Por ejemplo .. en archivos de texto plano tienes las funciones:

flock()
Con esa función bloqueas el archivo en sólo lectura .. o sólo escritura según necesites.

Tienes ejemplos en los comentarios de los usuarios de:
http://www.php.net/manual/en/function.flock.php

Y si hablamos de base de datos .. cada manejador usa sus própios comados SQL para tal fin.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 20/04/2004, 15:27
Avatar de nublar
(Desactivado)
 
Fecha de Ingreso: octubre-2003
Ubicación: Argentina - BsAs
Mensajes: 321
Antigüedad: 14 años, 1 mes
Puntos: 0
Es cierto eso de que si se intenta abrir el archivo por dos o más usuarios simultaneamente el archivo se corrompe??
Cuando pasa en lectura... en escritura o en ambos??
Saludos
  #7 (permalink)  
Antiguo 20/04/2004, 15:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. por mi parte no te sé decir si realmente se "corrompe" .. pero el hecho es que los archivos de texto plano son de lectura secuencia .. así que si en tiempo X se empieza a abrir el archivo para lectura y en X+1 (no llegando al final de la lectura del archivo) se realiza una petición de escritura en ese tiempo .. no sé que mecanismos de seguridad dispondrá el sistema operativo que use el servidor .. (supongo que algo mejores si se trata de sistemas *NIX que windows ..) pero podría pasar de todo.

Por eso sería recomendable usar las funciones que te dejé de ejemplo para bloquear el archivo en ese instante. ¿Supongo? que esto hará que pierdas "conteos" (si lo bloqueas en escritura) .. pero tal vez ¿vale la pena perder un conteo que no el archivo entero?.

También ten presente el tiempo de lectura de un archivo de texto plano de gran tamaño .. así que más probabilidades tendras que suceda esto.

Esto se solventa con "Base de datos" ya que su acceso es aleatorio .. así que por un lado puedes estar leyendo un registro o grupo de ellos y por otro creando o actualizando más registros y para más seguridad tienes sentencias SQL que realizan ese bloqueo a nivel de registros o tablas.

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 17:20.