Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/txt] Licznik osób online na plikach - problem ze zliczaniem
Forum PHP.pl > Forum > PHP
Hubson
Witam,

Pisząc sobie system statystyk na stronę, postanowiłem umieścić tam także liczbę osób będących online. Do tego celu wykorzystałem mechanizm sesji (session_id()) oraz timestamp'y. Przyjąłem, iż jedna osoba spędza w serwisie około 5 minut 30 sekund winksmiley.jpg. I w ten sposób powstał ten oto algorytm:
  1. <?php
  2.  
  3. $plik = 'online.dat';
  4.  
  5. if( !file_exists($plik) )
  6. {
  7. touch($plik);
  8. $op = @fopen ($plik, "w");
  9. $wpis = session_id().'|'.time()."n";
  10. fwrite( $op, $wpis );
  11. fclose( $op );
  12. }
  13. else {
  14. $ott = file($plik);
  15. $po = count($ott);
  16.  
  17. for($i=0;$i<$po;$i++)
  18. {
  19. $index = explode('|', $ott[$i]);
  20. if ( time()-$index[1]<=330 )
  21. {
  22. if(session_id()!=$index[0] && $index[1]==0)
  23. $tablica[]=session_id().'|'.time();
  24. else
  25. $tablica[]=$index[0].'|'.time();
  26. }
  27. else {
  28. if($index[0]==session_id())
  29. $tablica[]=$index[0].'|'.time(); 
  30. else 
  31. $tablica[]=session_id().'|'.time();
  32. }
  33. }
  34.  
  35. $op = @fopen ($plik, "w");
  36.  
  37. $pt = count($tablica);
  38. for($i=0;$i<$pt;$i++)
  39. {
  40.  if ( @flock( $op, 2 ) ) 
  41. {
  42. fwrite( $op, $tablica[$i]."n" );
  43. flock( $op, 3 );
  44. fclose( $op );
  45. }
  46. }
  47. }
  48.  
  49. echo 'online: '.count( file( $plik ) );
  50. ?>

Niestety coś jest nie tak, ponieważ nie zlicza poprawnie osób online. Pomimo usilnych prób odnalezienia błędu nie udało mi się to. Wychodzi na to, że przyszedłem do Was po radę winksmiley.jpg.
Z góry dziękuję za udzieloną pomoc.
Sebastian Rozmus
jak mozesz to napisz jak konkretnie działa (czy wpisuje za duzo , za mało , cały czas tą samą liczbe)... a czemu nie ma tu session_start() ?
Hubson
Cytat(Sebastian Rozmus @ 24.05.2007, 20:05:29 ) *
a czemu nie ma tu session_start() ?
Zapomniałem przekleić aarambo.gif winksmiley.jpg. Już jest, proszę winksmiley.jpg.

Działanie można obejrzeć: skrypt i plik tekstowy (otwieraj na minimum 3 przeglądarkach, sprawdzaj plik tekstowy i odświeżaj... jeżeli tak trudno wrzucić na własnego localhosta...
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.