Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/txt] Licznik osób online na plikach - problem ze zliczaniem
Hubson
post 24.05.2007, 18:52:38
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 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.

Ten post edytował Hubson 24.05.2007, 19:10:04


--------------------
Prison Break - Skazany na śmierć
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Sebastian Rozmus
post 24.05.2007, 19:05:29
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 24.05.2007, 19:12:51
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ć 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...


--------------------
Prison Break - Skazany na śmierć
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 02:25