Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]czas przebywania na serwerze
Forum PHP.pl > Forum > Przedszkole
Remika
witam

Od jakiegoś czasu próbuje wymyślić coś sensownego, ale niestety nic nie wychodzi o ile przez pierwszą część zadania potrafię jakoś przebrnąć
choć nie wiem czy poprawnie to druga część jest czarną magią. Ale wyjaśnię o czym piszę.

Chcę stworzyć skrypt php, który pobierze ze zdalnego serwera aktualnie zalogowaną osobę i wyświetli czas pobytu tej osoby na serwerze.
Pierwsza część to zapytanie na serwer kto w danej chwili tam urzęduje i to działa w 100% dostaje informację zwrotną kto tam jest, jeśli dostanę tą informację
to zapytam o czas czyli date("G:i:s") mam już czas startu , ale nie wiem jak zakończyć jak pobrać czas zakończenia.
Próbowałem też dodać do pliku tekstowego uprawnione osoby do przebywania na serwerze (nicki) i porównywać z danymi jakie otrzymuje z serwera i wtedy przypisać
danemu nickowi czas startu.

Proszę podpowiedzcie w jaki sposób najlepiej to rozwiązać dla osoby która metodą prób i błędów coś tam na grzebie w skrypcie.

Jeszcze raz w skrócie:
- pobieram z serwera kto tam jest zalogowany (nie może być więcej niż jedna osoba)
- kiedy się zalogował
- kiedy skończył
- i ile czasu tam przebywał

Potrzebuje te dane do wykazania czasu pracy na serwerze w sposób prosty i czytelny, za okazaną pomoc serdecznie dziękuje


Remik




Nie wiem czy nie pomyliłem działu, czy to aby nie za trudne ? dla rozjaśnienia sytuacji wkleję kod do którego
miejsca potrafiłem sobie jakoś poradzić, kod jest zaadaptowany na moje potrzeby.
  1. $sc[czas] = 20;
  2. $sc[host] = "sc1.24cast.pl";
  3. $sc[port] = 8450;
  4.  
  5.  
  6. $sc[template2] = "<b>[genre]</b>";
  7.  
  8.  
  9. if($fp = fsockopen($sc[host], $sc[port]))
  10. {
  11. fputs($fp,"GET /index.html HTTP/1.0\r\nUser-Agent: XML Getter (Mozilla Compatible)\r\n\r\n");
  12. fgets($fp);fgets($fp);fgets($fp);
  13. while(!feof($fp)) $in.=strip_tags(fgets($fp));
  14. fclose($fp);
  15.  
  16.  
  17. // [status]
  18. $m[0]="Server is currently";
  19. $m[1]="";
  20. $mp[0]=strpos($in,$m[0]);
  21. $mp[1]=@strpos($in,$m[1]);
  22. $ml[0]=strlen($m[0]);
  23. $ml[1]=strlen($m[1]);
  24.  
  25. $tmp[1]=explode( " " , trim( substr( $in , $mp[0] + $ml[0] , 5 ) ) );
  26.  
  27. if( $tmp[1][0] == "up" )
  28. $dat[status] = "On";
  29. elseif( $tmp[1][0] == "down" )
  30. $dat[status] = "Off";
  31. else
  32. $dat[status] = "err";
  33.  
  34. if($dat[status]=="On")
  35. {
  36. // [genre]
  37. $m[0]="Stream Genre:";
  38. $m[1]="Stream URL:";
  39. $mp[0]=strpos($in,$m[0]);
  40. $mp[1]=strpos($in,$m[1]);
  41. $ml[0]=strlen($m[0]);
  42. $ml[1]=strlen($m[1]);
  43.  
  44. $tmp[1]=trim( substr( $in , $mp[0] + $ml[0] , $mp[1]-$mp[0]-$ml[1]-2 ) );
  45.  
  46. if( $tmp[1] ) $dat[genre] = $tmp[1];
  47. else $dat[genre] = "err";
  48.  
  49. }
  50. }
  51. else
  52. {
  53. $dat=array();
  54. $dat[status]="err";
  55. }
  56.  
  57. $co = array('[status]','[genre]');
  58. $naco = array($dat[status],$dat[genre]);
  59. $sc[template1] = str_replace($co,$naco,$sc[template1]);
  60. $sc[template2] = str_replace($co,$naco,$sc[template2]);
  61.  
  62. $fp1 = @fsockopen($sc[host], $sc[port], &$errno, &$errstr, 10);
  63.  
  64. if (!$fp1) {
  65. $text = "Aktualnie nie nadajemy";
  66. } else {
  67.  
  68. fputs($fp1, "GET /7 HTTP/1.1\nUser-Agent:Mozilla\n\n");
  69.  
  70. for($i = 0; $i < 1; $i++) {
  71. if (feof($fp1)) break;
  72. $fp_data1 = fread($fp1, 31337);
  73. usleep(500000);
  74. }
  75.  
  76. $fp_data1 = ereg_replace("^.*<body>", "", $fp_data1);
  77. $fp_data1 = ereg_replace("</body>.*", "", $fp_data1);
  78.  
  79. list($current1, $status1, $peak1, $max1, $reported1, $bit1, $song1) = explode(",", $fp_data1, 7);
  80.  
  81. if ($status1 == "1")
  82. $text = "$song1";
  83. else
  84. $text = "Aktualnie nie nadajemy";
  85. }


Mając $dat[genre] jestem w stanie wyciągnąć osobę która aktualnie przebywa na serwerze
ale w jaki sposób dorobić resztę? nie mam pomysłu i bez waszych podpowiedzi nie dam rady.
czas w jakim weszła dana osoba i jakim zakończyła.

Remik

dg2001
W panelu admina, masz link View Log File, zerknij sobie tam winksmiley.jpg
Remika
Cytat(dg2001 @ 30.07.2010, 13:06:32 ) *
W panelu admina, masz link View Log File, zerknij sobie tam winksmiley.jpg


Wiesz zastanawiałem się troszkę jak Tobie odpowiedzieć na tą sugestię typu "google wiedzą wszystko",
i doszedłem do wniosku, że może nie zrozumiałeś mego pytania i cierpliwie wytłumaczę raz jeszcze.

Ja mam dostęp do serwera i do panelu administratora, mogę też to sprawdzić, ale załóżmy że Ty pracujesz
w zespole i potrzebujesz te dane a mnie nie ma, i co wtedy? chyba łatwiej jest dać dostęp do strony dla danej
grupy użytkowników niż każdemu dostęp do panela administratora.

Myślę że rozwiałem wszystkie wątpliwości i ten off top skończy się a dostanę sugestie czym jakimi funkcjami
mam się zainteresować poszukać lub ktoś ma podobny przykład i powie jak wykonać to zadanie.


Remik
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.