Ver Mensaje Individual
  #10 (permalink)  
Antiguo 20/06/2005, 23:50
DarioDario
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
buenas, como ya se me adelanto jam1138, solo queda afirmar lo que el dijo... el archivo tiene que tener un valor inicial de 0, sino no puede empezar porq no tiene a que sumar... para que te aparezca alineado a la izquierda tendrias q rodear la variable $visitas con un div o como quieras, por ejemplo podria ser <div align='left'>$visitas</div> nose si estara bien por no recuerdo si era aling o align ...
bueno se me a ocurrido sobre un posible error sobre este script y probando lo descubri y empece a buscar una solucion, todavia no probe la solucion por falta de tiempo pero te adelanto sobre que trata... como se ve el script va directamente a leer y escribir sobre el archivo, y supongamos si dos personas visitan la pagina al mismo tiempo(¿?) entrarian los dos y escribirian los dos sobre el archivo, sobre un posible error minimo, sumaria cualquier cosa y esto nos generaria caulquier resultado , pero como error grave tendriamos un archivo corrupto, la sulucion(¿?), insertar un "candado" al archivo cuando se abre, y poder trabajar tranquilos sobre el archivo y si hay otra peticion para abrir el archivo tendria que esperar hasta que este "candado" sea abierto y dando paso a esa peticion la solucion la en contre en una web, no la pasare por respeto a esta web, pero si adjunto el arreglo y una explicacion breve sobre el "candado"...
Código PHP:
<?php 

function contador($value FALSE

        
$archivo "contador.txt"

        if (
$fp fopen($archivo,"r+"))  //Se abre el archivo q llevara la cuenta 
        

                
flock($fp2); // Aplicamos el "candado"
                
$cont fread($fp,5);  //Se lee el archivo y se adjudica el resultado a una variable 

                
if($value
                { 
                        
$cont += 1;  //Se incrementa en 1 

                        
rewind ($fp);  //El puntero lo llevo al pricipio 

                        
fputs($fp,$cont);  //Se escribe el archivo, se pisa lo q ya estaba escrito 
                


                
flock($fp3); // Se termino el trabajo sobre el archivo y sacamos el "candado"
                
fclose($fp);  //Se cierra el archivo 
        
}else{ 
                
$cont =  "Error en el contador.";  //Mensaje de error a mostrar 
        


        return 
$cont;  // Se devuelve la cantidad de visitas 


?>
La otra parte del script, osea como llamarlo sigue siendo el mismo...
Cita:
Opciones de flock()

flock() opera sobre un file handler que debe apuntar a un fichero previamente abierto. Puede tener los siguientes valores:
  • Para que adquiera un bloqueo compartido (lectura), se fija su valor a 1. Mas de un proceso puede tener un candado compartido para un mismo archivo.
  • Para obtener un bloqueo exclusivo (escritura), se fija el valor a 2. Solo un proceso puede tener un candado exclusivo. Los demás procesos deben esperar.
  • Para liberar un bloqueo (compartido o exclusivo), se fija el valor a 3.
  • Si no quieres que flock() bloquee mientras está activado, suma 4 al valor fijado. si se quiere que flock no bloquee el script sumar 4 al modo (modos: 5,6,7) y consultar por el valor devuelto por la función: true si el lock fue adquirido o false si no fue adquirido. Usando esta función pueden implementarse mecanismos de sincronización entre procesos
bueno espero q te sirva y bueno para q aprendamos todos adjunte las opciones sobre flock()...
lo prometido es deuda y bueno tratere de darte un contador q trabaje con mysql pero no tube tiempo ... pero tratare de hacertelo... y tratare de agregarle algun sistema de estadisticas... pero bueno esto es mas adelante el contador con mysql lo tendras en esta semana... bueno saludos