Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/txt] Licznik osób online na plikach - problem ze zliczaniem
Hubson
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 31.12.2006
Skąd: Warszawka

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/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ę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .
Z góry dziękuję za udzieloną pomoc.

Ten post edytował Hubson 24.05.2007, 19:10:04
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 08:54