オンラインの人数をカウントする、より正確な PHP コード

WBOY
リリース: 2016-07-25 09:05:34
オリジナル
1060 人が閲覧しました
  1. $filename='online.txt';//データファイル

  2. $cookiename='VGOTCN_OnLineCount';//Cookie名
  3. $onlinetime=600;//オンライン有効時間、単位: 秒 (つまり、600 は 10 分に相当します)
  4. $online=file($filename);

  5. //PHP file() 関数は、ファイル全体を配列に読み取ります。 file_get_contents() と似ていますが、file() はファイルを配列として返します。配列内の各セルは、改行を含むファイル内の対応する行です。失敗した場合は false を返します

  6. $nowtime=$_SERVER['REQUEST_TIME'];
  7. $nowonline=array();

  8. //まだ有効なデータを取得します

  9. foreach($online $ line){
  10. $row=explode('|',$line);
  11. $sesstime=trim($row[1]);
  12. if(($nowtime - $sesstime)<=$onlinetime){/ /if 有効な時間内であればデータは保存され続けますが、それ以外の場合は破棄され、カウントされなくなります
  13. $nowonline[$row[0]]=$sesstime;//オンライン リストを配列、セッションIDがキー名、最終通信時刻がキー値
  14. }
  15. }

  16. /*

  17. @訪問者通信ステータス作成
  18. Cookieを使用して通信
  19. COOKIEは無効になりますブラウザが閉じているとき、ただしブラウザが閉じていない場合、プログラムによって設定されたオンライン時間がタイムアウトするまで、この COOKIE は有効なままになります
  20. */
  21. if(isset($_COOKIE[$cookiename])){//If COOKIE がある、つまり初めての訪問ではない場合、人数は追加されず、通信時間は更新されます
  22. $uid=$_COOKIE[$ cookiename];
  23. }else{//がある場合COOKIE はありません。初めての訪問です
  24. $vid=0;//訪問者 ID を初期化します
  25. do{//ユーザーに新しい ID を与えます
  26. $vid++;
  27. $uid='U' }while( array_key_exists($uid,$nowonline));
  28. setcookie($cookiename,$uid);
  29. }
  30. $nowonline[$uid]=$nowtime;// 現在の時間ステータスを更新します
  31. / /現在オンラインの人数を数えます

  32. $total_online=count($nowonline);

  33. //データを書き込みます

  34. if($fp=@fopen($filename, 'w')){
  35. if(flock($fp,LOCK_EX)){
  36. rewind($fp);
  37. foreach($nowonline as $fuid=>$ftime){
  38. $fline=$fuid.'|' .$ftime."n ";
  39. @fputs($fp,$fline);
  40. }
  41. flock($fp,LOCK_UN);
  42. fclose($fp);
  43. }
  44. }
  45. echo 'document.write("' .$total_online.'" );';
  46. ?>

コードをコピー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート