Maison > développement back-end > tutoriel php > Comment implémenter et compter avec précision le nombre de personnes en ligne en PHP

Comment implémenter et compter avec précision le nombre de personnes en ligne en PHP

伊谢尔伦
Libérer: 2023-03-11 06:48:02
original
3385 Les gens l'ont consulté

L'exemple de cet article décrit la méthode de comptage du nombre de personnes en ligne en PHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

PHP encapsule très bien l'objet de session Selon le protocole HTTP, les visiteurs de chaque gamme de sites Web peuvent générer un identifiant unique

echo session_id();
//6ed364143f076d136f404ed93c034201<br />
Copier après la connexion
C'est la clé pour compter le nombre de personnes en ligne. Ce n'est qu'avec ce session_id que nous pouvons distinguer les personnes qui visitent. Parce que tout le monde est différent.

Ensuite, comment stocker la valeur de la variable de session dans la base de données. Ici, nous allons introduire une autre fonction

bool session_set_save_handler ( callable $open , callable $close , callable $read , callable $write , callable$destroy , callable $gc )
//callable 可随时支取的,请求即付的,随时可偿还的
// open(string $savePath, string $sessionName) 打开连接
//close() 关闭连接
//read(string $sessionId) 对出数据
//write(string $sessionId, string $data) //写入数据
//destroy($sessionId) //删除数据
//gc($lifetime) //垃圾回收函数
Copier après la connexion

Remarque , il existe plusieurs fonctions ci-dessus : S'il y en a. paramètres transmis, il vous suffit d'indiquer qu'ils sont transmis. Lorsque PHP exécute le code, il lira automatiquement les paramètres en

session

L'étape suivante consiste à compléter les cinq fonctions ci-dessus et une fonction principale

session_set_save_handler(
   array("session","open"),
   array("session","close"),
   array("session","read"),
   array("session","write"),
   array("session","destroy"),
   array("session","gc")
);
Copier après la connexion
La fonction principale est complétée de cette manière.

Remarque : toute méthode qui passe un objet en paramètre doit utiliser ce formulaire : array(object, "method name")

L'étape suivante consiste à écrire chaque fonction

//链接数据的open
function open($path,$sessname) {
  $db = mysql_connect("localhost","root","123456","test");
  mysql_select_db("test",$db);
  mysql_query("SET NAMES UTF8");
  return true;
}
Copier après la connexion
Fermer les données pouvant être liées

function close(){
$db = mysql_connect("localhost","root","123456","test");
mysql_close($db);
return true;
}
Copier après la connexion
La fonction clé est sur le point de démarrer, afficher le read function read(), principalement, la fonction read() a une valeur transmise. La valeur transmise est session_id

function read($sid){
  $sql = "select data from session where sid=&#39;{$sid}&#39; and card=&#39;".self::$card."&#39;";
  $query = mysql_query($sql) or die(mysql_error());
  $row = mysql_fetch_array($query);
  $row>0?$row["data"]:" ";
}
Copier après la connexion
La seconde est la fonction d'écriture si les données existent dans la base de données, comme. tant que l'heure de mise à jour est C'est tout, les nouvelles données sont écrites dans

function write($sid,$data)
{
   $sql = "select sid from session where sid=&#39;{$sid}&#39; and card=&#39;".self::$card."&#39;";
   $query = mysql_query($sql) or die(mysql_error());
   $mtime = time();
   $num = mysql_num_rows($query);
   if($num){
    $sql = "UPDATE session SET data=&#39;{$data}&#39;, mtime =&#39;{$mtime}&#39;";
   }else{
    $sql = "INSERT INTO session (sid,data,mtime,ip,card) VALUES(&#39;{$sid}&#39;,&#39;{$data}&#39;,&#39;".time()."&#39;,&#39;{$_SERVER[&#39;REMOTE_ADDR&#39;]}&#39;,&#39;".self::$card."&#39;)";
   }
   mysql_query($sql);
   return true;
}
Copier après la connexion
L'étape suivante est la fonction qui incarne le mécanisme de recyclage PHP. Les deux fonctions ont des paramètres transmis.

function destroy($sid){
  $sql = "DELETE FROM session WHERE sid=&#39;{$sid}&#39;";
  mysql_query($sql) or die(mysql_error());
  return true;
}
function gc($max_time){
  $max_time = 600;
  $sql = "DELETE FROM session WHERE `mtime`<&#39;".(time()-$max_time)."&#39;";
  mysql_query($sql) or die(mysql_error());
  return true;
}
Copier après la connexion
D'accord, les cinq fonctions sont terminées, puis le nombre d'enregistrements de session est lu à partir du tableau de session. Vous pouvez compter avec précision le nombre de personnes visitant la page.

Les enregistrements des utilisateurs qui n'ont pas fonctionné pendant 10 minutes seront effacés.

Le code pour implémenter avec précision la méthode de comptage des personnes en ligne via PHP :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal