Foros del Web » Programando para Internet » PHP »

Contabilizar accesos a una página

Estas en el tema de Contabilizar accesos a una página en el foro de PHP en Foros del Web. Buenas Tardes: Uso este sencillo código como contador de accesos a la página en la cual está puesto, Código PHP: <? $archivo  =  "index.txt" ; ...
  #1 (permalink)  
Antiguo 07/09/2004, 11:16
 
Fecha de Ingreso: septiembre-2003
Mensajes: 47
Antigüedad: 14 años, 3 meses
Puntos: 0
Contabilizar accesos a una página

Buenas Tardes:

Uso este sencillo código como contador de accesos a la página en la cual está puesto,

Código PHP:
<?
$archivo 
"index.txt";
$abre fopen($archivo"r");
$total fread($abrefilesize($archivo));
fclose($abre);
$abre fopen($archivo"w");
$total $total 1;
$grabar fwrite($abre$total);
fclose($abre);
echo 
"<br>Página vista ".$total."";
?>
y sacado de este foro (la verdad es que no lo he encontrado; disculpad). El problema está en que ya es la segunda vez que se resetea y vuelve a cero. La primera vez pensé que había sido yo al reescribir el txt pero ahora veo que no. ¿Alguien puede decirme a qué puede ser devido?

Gracias
Jhawslow
  #2 (permalink)  
Antiguo 08/09/2004, 02:11
 
Fecha de Ingreso: septiembre-2003
Mensajes: 47
Antigüedad: 14 años, 3 meses
Puntos: 0
¿Será motivado quizás por el acceso casual de dos individuos a la vez? Vayamos eliminando posibilidades.
Gracias
Jhawslow
  #3 (permalink)  
Antiguo 08/09/2004, 02:40
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
Probablemente sea por el acceso simultaneo de dos usuarios. Lo mejor es que uses la función flock:

http://www.ignside.net/man/php/archivos.4.php
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #4 (permalink)  
Antiguo 08/09/2004, 07:54
Avatar de Phobos  
Fecha de Ingreso: abril-2001
Ubicación: sentado frente a un pc prestado
Mensajes: 375
Antigüedad: 16 años, 7 meses
Puntos: 2
q increible funcion,
siempre se aprende algo nuevo.

Saludos.
  #5 (permalink)  
Antiguo 08/09/2004, 09:15
 
Fecha de Ingreso: septiembre-2003
Mensajes: 47
Antigüedad: 14 años, 3 meses
Puntos: 0
Cita:
Iniciado por living
Probablemente sea por el acceso simultaneo de dos usuarios. Lo mejor es que uses la función flock:

http://www.ignside.net/man/php/archivos.4.php
Gracias living

Ya me leí el apunte sobre la función flock (file lock). Pero cómo puedo ahora modificar el script de arriba con esta función.

Jhawslow
  #6 (permalink)  
Antiguo 09/09/2004, 02:29
 
Fecha de Ingreso: septiembre-2003
Mensajes: 47
Antigüedad: 14 años, 3 meses
Puntos: 0
Hola que tal:

Lo he puesto así
Código PHP:
<? 
$archivo 
"index.txt"
$abre fopen($archivo"r"); 


    
flock($archivo2);          // cerramos $file
    
fputs($archivo$the_line);  // escribimos el contenido en el
    
    
flock($archivo3);          // terminada la escritura, quitamos cierre
    
fclose($archivo);            // cerrar archivo
}
$total fread($abrefilesize($archivo)); 
fclose($abre); 
$abre fopen($archivo"w"); 
$total $total 1
$grabar fwrite($abre$total); 
fclose($abre); 
echo 
"<br>Página vista ".$total.""
?>
y aumenta correctamente el contador al acceder a la página. No sé si estará correcto y que pasaría si coincidieran dos accesos a la vez.
Gracias
Jhawslow
  #7 (permalink)  
Antiguo 09/09/2004, 03:01
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
Yo lo dejaría así:

Código PHP:
<? 
$archivo 
"index.txt"
$abre fopen($archivo"r"); 
flock($abre2);
$total fread($abrefilesize($archivo)); 
fclose($abre); 
$abre fopen($archivo"w"); 
$total $total 1
$grabar fwrite($abre$total); 
flock($abre3);
fclose($abre); 
echo 
"<br>Página vista ".$total.""
?>
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #8 (permalink)  
Antiguo 09/09/2004, 04:37
 
Fecha de Ingreso: septiembre-2003
Mensajes: 47
Antigüedad: 14 años, 3 meses
Puntos: 0
La verdad es que no se parece en nada a lo que yo puse arriba. Lo he cambiado y funciona esperando que funcione si acceden dos a la vez. Que seguro que funciona.

Gracias living
Jhawslow
  #9 (permalink)  
Antiguo 09/09/2004, 04:40
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
Espero yo también que funcione . Si sigue ocurriendo no dudes en postearlo a ver si entre todos le damos una solución a tu problema.
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #10 (permalink)  
Antiguo 09/09/2004, 06:33
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
He estado probando desde consola ejecutando la aplicación concurrentemente y sigue fallando. Pero he visto un ejemplo en donde bloquean un fichero auxiliar y haciendolo así funciona a la perfección. Previamente tendrás que crear el fichero lock.tmp (o el nombre que quieras, si están en linux puedes poner .lock como nombre de fichero y así queda como fichero oculto) porque si no da error. No sé explicarte por qué funciona pero el hecho es que lo hace

Código PHP:
<? 
$archivo 
"index.txt"

$lock "lock.tmp";
$lock_fp fopen($lock"r");
flock($lock_fpLOCK_EX);

$abre fopen($archivo"r"); 
$total fread($abrefilesize($archivo)); 
fclose($abre); 
$abre fopen($archivo"w");
$total $total 1
fwrite($abre$total); 
fclose($abre); 

flock($lock_fpLOCK_UN);
echo 
$total
?>
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #11 (permalink)  
Antiguo 12/10/2004, 14:03
 
Fecha de Ingreso: septiembre-2003
Mensajes: 47
Antigüedad: 14 años, 3 meses
Puntos: 0
Cita:
Iniciado por living
He estado probando desde consola ejecutando la aplicación concurrentemente y sigue fallando. Pero he visto un ejemplo en donde bloquean un fichero auxiliar y haciendolo así funciona a la perfección. Previamente tendrás que crear el fichero lock.tmp (o el nombre que quieras, si están en linux puedes poner .lock como nombre de fichero y así queda como fichero oculto) porque si no da error. No sé explicarte por qué funciona pero el hecho es que lo hace

Código PHP:
<? 
$archivo 
"index.txt"

$lock "lock.tmp";
$lock_fp fopen($lock"r");
flock($lock_fpLOCK_EX);

$abre fopen($archivo"r"); 
$total fread($abrefilesize($archivo)); 
fclose($abre); 
$abre fopen($archivo"w");
$total $total 1
fwrite($abre$total); 
fclose($abre); 

flock($lock_fpLOCK_UN);
echo 
$total
?>
La verdad es que no ví este último post y ahora que ha fallado lo anterior lo veo. ¡Maldición!. Probaré esto que pones ya que volvió a resetearse.
Gracias Living ya diré alguna cosa.
Jhawslow
  #12 (permalink)  
Antiguo 13/10/2004, 01:31
 
Fecha de Ingreso: septiembre-2003
Mensajes: 47
Antigüedad: 14 años, 3 meses
Puntos: 0
Hola que tal:
He hecho un par de pruevas con esta modificación del código que has puesto. Suma accesos correctamente -también lo hacía el anterior- y bueno no sé si funcionara al coincidir dos al mismo tiempo. No sé que función o misión cumple el archivo .lock pero bueno. La verdad es que es un poco jodido el tema ya que seguramente por hacer las cosas mal desde un principio me veo con más de 500 páginas para modificar si funcionara esto correctamente. Seguro que había una forma mejor o más cómodo para hacer esto o no lo sé ya que son páginas totalmente distintas unas de otras y lógicamente también tendrán que tener 500 txt. Un follón.
Aquí te pongo el código que pondré en cada página una vez alguien me confirme que esto funciona y no volverá a resetearse o ponerse a cero.

Código PHP:
 <? 
$archivo 
"pepin.txt"

$lock ".lock"
$lock_fp fopen($lock"r"); 
flock($lock_fpLOCK_EX); 

$abre fopen($archivo"r"); 
$total fread($abrefilesize($archivo)); 
fclose($abre); 
$abre fopen($archivo"w"); 
$total $total 1
fwrite($abre$total); 
fclose($abre); 

flock($lock_fpLOCK_UN); 
echo 
"<br>Johan vista ".$total.""
?>
Aquí mi web por si queréis hechar un vistazo.

Gracias y hasta la próxima.
Jhawslow
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 03:36.