Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][[PHP]Problem z skryptem :), Zapytanie
xavierek
post
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 2
Dołączył: 22.03.2009

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


Witam mam bazę zakończonych sesji o strukturze USER_ID | SESSION_START | SESSION_END oraz bazę z rozpoczętymi sesjami USER_ID | SESSION_START

session start i end to aktualny timestemp
Maksymalny czas trwania sessji to 23:59 H

Pytanie mam takie jak najlepiej napisać skrypt który pokazuje użytkownika najdłużej online w aktualnym dniu i ile sekund spędził. Umiał bym to zrobić jeśli sesje zaczynały by się w danym dniu i kończyły w tym samym. lecz użytkownik może zalogować się o 23:00 i być do 4 po czym wejść o 6 o być do 10

Dziękuje z góry za każdą pomoc w naprowadzeniu mnie na rozwiązanie

w ten sposób pobieram zakres daty dla danego dnia

  1. $toDayStart = strtotime(date("Y-m-d 00:00:00"));
  2. $toDayEnd = strtotime(date("Y-m-d 23:59:59"));


wymyśliłem coś takiego:

  1. $x = mysql_query("SELECT user_id, session_start, session_end FROM users_sessions WHERE (session_start>='$toDayStart' OR session_end>='$toDayStart')");
  2. while($xx = mysql_fetch_array($x)) {
  3. $user_id = $xx['user_id'];
  4. $session_start = $xx['session_start'];
  5. $session_end = $xx['session_end'];
  6. if($session_start>=$toDayStart){
  7. if($toDayEnd>=$session_end){
  8. $count = $session_end-$session_start;
  9. $online[$user_id] = $count;
  10. }
  11. else{
  12. $session_end=$toDayEnd;
  13. $count = $session_end-$session_start;
  14. $online[$user_id] = $count;
  15. }
  16. }
  17. elseif($session_end>=$toDayStart){
  18. if($session_start>=$toDayStart){
  19.  
  20. $count = $session_end-$session_start;
  21. $online[$user_id] = $count;
  22. }
  23. else{
  24. $session_start=$toDayStart;
  25. $count = $session_end-$session_start;
  26. $online[$user_id] = $count;
  27. }
  28.  
  29. }
  30.  
  31. }
  32. arsort($online);
  33. echo key($online).'<br>';
  34. echo current($online).'<br><br>';


czy to dobrze policzy ilość sekund spędzonych na stronie czy może jakiś logiczny błąd zrobiłem ?, dodanie z rozpoczętej sesji to pikuś wiec nawet nie pisze na razie.

Ten post edytował xavierek 14.07.2011, 00:54:09
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 - 19:36