| |||
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 |
| |||
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 |
| |||
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 |
| |||
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. |
| ||||
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 |
| |||
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. |