Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
Sebastian Rozmus
post
Post #2





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 28.01.2007
Skąd: Lublin

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


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() ?
Go to the top of the page
+Quote Post
Hubson
post
Post #3





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

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


Cytat(Sebastian Rozmus @ 24.05.2007, 20:05:29 ) *
a czemu nie ma tu session_start() ?
Zapomniałem przekleić (IMG:http://forum.php.pl/style_emoticons/default/aarambo.gif) (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . Już jest, proszę (IMG:http://forum.php.pl/style_emoticons/default/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...
Go to the top of the page
+Quote Post

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: 25.08.2025 - 06:50