Encontré la solución de muy mala calidad y solo una forma rápida y sucia de hacerlo.
Yo también estaba desarrollando algo similar y formulé un método rápido que funciona sin redundancia.
Necesitaba un contador cada vez que alguien accedía al perfil de otro usuario.
Pseudo:
- crear una tabla con el nombre del espectador y el nombre de viewee (daily_views tabla).
- Verifique si existe el nombre del espectador con el nombre del usuario (en la misma fila).
- Si no existen, actualice el contador de usuarios +1 (en la tabla de usuarios).
- No hacer nada.
- Restablecer todos los valores de la tabla null cada 24/12 horas mediante el trabajo cron.
Esto negar la misma persona que acceda al mismo perfil de usuario para añadir 1 al contador en actualización para todo el día (o 12 horas), mientras que la solución anterior por Glenn Nelson sería de hecho añadir 1 al contador , pero niega agregar a cada contador del usuario al mismo tiempo.
No sólo esto, pero si tuviera que cerrar la sesión y volver a iniciar sesión en el sitio Web, a continuación, sería simplemente volver a añadir a la barra en la que algunos casos los trolls y haxorz aspirante de explotar todo ese (como la sesión es destruido y comenzó de nuevo).
Éstos son mis tablas de ejemplo:
users
{
user_id INT(8) auto increment, user_name varchar(32), user_counter INT(12)
};
daily_views
{
view_id INT(8) auto increment, viewer_name VARCHAR(32), viewee_name VARCHAR(32)
};
Aquí es código de ejemplo que he escrito:
<?php
session_start();
$uname = $_SESSION['username'];
$vieweepage = $_GET['name']; //gets the name of the persons page/profile via previous page/form
$connect = mysql_connect("localhost","user","password") or die("Couldn't connect; check your mysql_connect() settings");
$database = mysql_select_db("database") or die("Could not locate database!");
$query = mysql_query("SELECT user_counter from users");
$query = mysql_fetch_row($query);
$counter = $query[0];
$viewcheck = mysql_query("SELECT viewer_name from daily_views WHERE viewee_name='$vieweepage'");
$viewrow = mysql_num_rows($viewcheck);
$newcounter = $counter + 1;
if($viewrow == 0)
{
$update = mysql_query("UPDATE users SET user_counter='$newcounter' WHERE user_name='$vieweepage'");
$insert = mysql_query("INSERT into daily_views (viewer_name, viewee_name) VALUES ('$uname', '$vieweepage')");
}
?>
Consideraría usar algo que no sea un archivo plano para realizar un seguimiento del número de visitas que tiene un script. La razón es que una condición de carrera puede ocurrir y omite contabilizar algunas entradas o (peor aún) no puede abrir el archivo y restablecer el recuento a 1 (si file_get_contents() devuelve FALSE, FALSE + 1 = 1) –