Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [skrypcik] Licznik userów online
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
Bastion
  1. <?php
  2. function online_meter($uid, $livetime = 300)
  3. {
  4. $filename = 'online_meter/log.txt';
  5.  
  6. $keep = array();
  7. $now = time();
  8. $max_live = $now - $livetime;
  9. $add_guest = true;
  10.  
  11. if ($table = @file($filename))
  12. {
  13. for ($i = 0, $j = count($table); $i < $j; $i++)
  14. {
  15. list($user_id, $user_time) = explode(';', $table[$i]);
  16. if ($user_time > $max_live)
  17. {
  18. $keep[] = $table[$i];
  19. if ($uid == $user_id)
  20. {
  21. $add_guest = false;
  22. }
  23. }
  24. }
  25. if (count($keep) != count($table))
  26. {
  27. for ($i = 0, $j = count($keep); $i < $j; $i++)
  28. {
  29. $buff .= $keep[$i];
  30. }
  31. $om = fopen($filename, 'w');
  32. fputs($om, $buff);
  33. fclose($om);
  34. }
  35. }
  36.  
  37. if ($add_guest)
  38. {
  39. $om = fopen($filename, 'a+');
  40. fputs($om, $uid.';'.$now."n");
  41. fclose($om);
  42. return count($keep)+1;
  43. }
  44.  
  45. return count($keep);
  46. }
  47.  
  48. $users_online = online_meter($_SERVER['REMOTE_ADDR']);
  49.  
  50. ?>
tiraeth
Przenoszę na Algorytmy, klasy, funkcje
nasty
Ale takich skryptow sa miliardy w internecie...
Bastion
@nasto : milairdy + jeden smile.gif

A na powaznie, ten jest _chyba_ bardziej ekonomiczny w oparciu o pliki, nizeli te ktore widzialem na forum
dzafel
Hmm.. jak dla mnie to bardzo zamotana ta funkcja. Ja kiedyś napisałem sobie coś takiego i w zupełności mi wystarcza.

  1. <?php
  2.  
  3. function users_online($uip, $live = 300) {
  4. $filename = './users_online.txt';
  5. $users = unserialize(file_get_contents($filename));
  6. foreach ($users as $ip => $time) {
  7. if ($time + $livetime < time()) {
  8. unset($users[$ip]);
  9. }
  10. }
  11. $users[$uip] = time();
  12. file_put_contents($filename, serialize($users));
  13. return count($users);
  14. }
  15.  
  16. $ile_online = users_online($_SERVER['REMOTE_ADDR']);
  17.  
  18. ?>
Setesh
A ja mam takie małe zapytanie... jestem początkujący i nie wiem jak wywołać te liczniki - może ktoś mi napisać jak to zrobić ? Będę bardzo wdzięczny za przykłady do obu liczników bo mi coś nie udaje się sad.gif
envp
no wystarczy dać w przypadku 1:

  1. <?php
  2. echo $users_online
  3. ?>


no i oczywiście mieć katalog : online_meter

a w nim plik log.txt


W przypadku systemow nix'owych jeszcze dostęp do tego pliku dla apache'a (chmod 777 online_meter)

Drugi licznik - analogicznie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.