php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.01.2011, 18:52  
Benutzer
 
Registriert seit: 10.01.2009
Beiträge: 51
Freakli befindet sich auf einem aufstrebenden Ast
Standard TS3 | Client Counter

Nabend,

das Webinterface für TS3 (darf man Namen sagen?) hat einen Client Counter.
Den bekomm ich auch schön exportiert, auch angzeigt für den jeweiligen Port des Servers.
Leider aber nicht für jeden Port gleichzeitig.
Das ganze sollte einem Statusscript dienen, dass nach Monatsbesuchern den Prozentsatz zu den Max-Clients ausrechnet und dann halt eben sagt "du bist jeweils unter X-%"

Hier mal das Script:
PHP-Code:
<?php
require_once("ts3admin.class.php");

//Mtz0xS2A
$ts3=new ts3admin('127.0.0.1','10011');
if(
$ts3->getElement('success'$ts3->connect())) {
//$port='9987';


$i=0;
$start_while=0;
$duration_while=1;
$count_month=0;
$perc_month=0;

$thismonth=mktime(0,0,0,date("n"),1,date("Y"));
$serverinfo=$ts3->getElement('data'$ts3->serverInfo());
$clientlist=$ts3->getElement('data'$ts3->clientList());
$slots=$serverinfo['virtualserver_maxclients'];
$servers=$ts3->serverList();

foreach(
$servers['data'] as $server) {

echo 
'<pre>'.print_r($server['virtualserver_port'],true).'</pre>';    
$ts3->selectServer($server['virtualserver_port']);
}
//echo '<pre>'.print_r($serverinfo['virtualserver_maxclients'],true).'</pre>';
//echo '<pre>'.print_r($ts3->clientDbList($start_while, $duration_while),true).'</pre>';

while($clientdblist=$ts3->getElement('data'$ts3->clientDbList($start_while$duration_while)))
    {
    foreach(
$clientdblist AS $key=>$value)
        {
        if(!empty(
$clientlist))
            {
            foreach(
$clientlist AS $key2=>$value2)
                {
                if(
$value['cldbid']==$value2['client_database_id'])
                    {
                    
$clientstatuslist[$i]['online']=1;
                    }
                }
            }
        
$clientstatuslist[$i]['cldbid']=$value['cldbid'];
        
$clientstatuslist[$i]['client_lastconnected']=$value['client_lastconnected'];
        
$i++;    
        }
    
$start_while=$start_while+$duration_while;
    }
$totalclients=count($clientstatuslist);



if(!empty(
$clientstatuslist))
    {
    foreach(
$clientstatuslist AS $key => $value)
        {
        if(
$value['client_lastconnected']>=$thismonth)
            {
            
$count_month++;
            }
        }
    if(!empty(
$count_month))
        {
        
$perc_month=round(100*$count_month/$totalclients);
        }
    }


$percent=100/$slots*$count_month;
if(
$percent<='35' && $percent>='0'){
    echo
'Gefährdeter Server!!!<br/>';
    echo (
$slots/100*$count_month);
    echo 
$count_month;
}elseif(
$percent<='65' && $percent>='35'){
    echo
'2.Gefährdeter Server!!!<br/>';
    echo (
$slots/100*$count_month);
    echo 
$count_month;
}elseif(
$percent<='99' && $percent>='65'){
    echo
'3 2.Gefährdeter Server!!!<br/>';
    echo (
$slots/100*$count_month);
    echo 
$count_month;
}else{
    echo
'Online!!!';
}
echo
'<br/><br/>';

}else{
    echo 
'Connection could not be established.';
}

?>
Script sieht katastorphal aus ^^ Ist auch nur zum testen...
Freakli ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.01.2011, 19:00  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Was heißt nicht gleichzeitig? Und wo ist jetzt wirklich dein Problem?
Flor1an ist offline   Mit Zitat antworten
Alt 23.01.2011, 21:10  
Benutzer
 
Registriert seit: 10.01.2009
Beiträge: 51
Freakli befindet sich auf einem aufstrebenden Ast
Standard

Das Problem ist, dass ich so ein Array habe:

PHP-Code:
Array
(
    [
0] => Array
        (
            [
virtualserver_id] => 1
            
[virtualserver_port] => 9987
            
[virtualserver_status] => online
            
[virtualserver_clientsonline] => 0
            
[virtualserver_queryclientsonline] => 0
            
[virtualserver_maxclients] => 32
            
[virtualserver_uptime] => 118
            
[virtualserver_name] => TeamSpeak ]IServer
            
[virtualserver_autostart] => 1
            
[virtualserver_machine_id] => 
        )

    [
1] => Array
        (
            [
virtualserver_id] => 2
            
[virtualserver_port] => 9988
            
[virtualserver_status] => online
            
[virtualserver_clientsonline] => 0
            
[virtualserver_queryclientsonline] => 0
            
[virtualserver_maxclients] => 32
            
[virtualserver_uptime] => 117
            
[virtualserver_name] => TeamSpeak ]IServer
            
[virtualserver_autostart] => 1
            
[virtualserver_machine_id] => 
        )

    [
2] => Array
        (
            [
virtualserver_id] => 3
            
[virtualserver_port] => 9989
            
[virtualserver_status] => online
            
[virtualserver_clientsonline] => 0
            
[virtualserver_queryclientsonline] => 0
            
[virtualserver_maxclients] => 32
            
[virtualserver_uptime] => 116
            
[virtualserver_name] => TeamSpeak ]IServer
            
[virtualserver_autostart] => 1
            
[virtualserver_machine_id] => 
        )

    [
3] => Array
        (
            [
virtualserver_id] => 4
            
[virtualserver_port] => 9990
            
[virtualserver_status] => online
            
[virtualserver_clientsonline] => 0
            
[virtualserver_queryclientsonline] => 0
            
[virtualserver_maxclients] => 32
            
[virtualserver_uptime] => 115
            
[virtualserver_name] => TeamSpeak ]IServer
            
[virtualserver_autostart] => 1
            
[virtualserver_machine_id] => 
        )

    [
4] => Array
        (
            [
virtualserver_id] => 5
            
[virtualserver_port] => 9991
            
[virtualserver_status] => online
            
[virtualserver_clientsonline] => 0
            
[virtualserver_queryclientsonline] => 0
            
[virtualserver_maxclients] => 32
            
[virtualserver_uptime] => 114
            
[virtualserver_name] => TeamSpeak ]IServer
            
[virtualserver_autostart] => 1
            
[virtualserver_machine_id] => 
        )

    [
5] => Array
        (
            [
virtualserver_id] => 6
            
[virtualserver_port] => 9992
            
[virtualserver_status] => online
            
[virtualserver_clientsonline] => 0
            
[virtualserver_queryclientsonline] => 0
            
[virtualserver_maxclients] => 32
            
[virtualserver_uptime] => 113
            
[virtualserver_name] => TeamSpeak ]IServer
            
[virtualserver_autostart] => 1
            
[virtualserver_machine_id] => 
        )

    [
6] => Array
        (
            [
virtualserver_id] => 7
            
[virtualserver_port] => 9993
            
[virtualserver_status] => online
            
[virtualserver_clientsonline] => 0
            
[virtualserver_queryclientsonline] => 0
            
[virtualserver_maxclients] => 32
            
[virtualserver_uptime] => 113
            
[virtualserver_name] => TeamSpeak ]IServer
            
[virtualserver_autostart] => 1
            
[virtualserver_machine_id] => 
        )

    [
7] => Array
        (
            [
virtualserver_id] => 8
            
[virtualserver_port] => 9994
            
[virtualserver_status] => online
            
[virtualserver_clientsonline] => 0
            
[virtualserver_queryclientsonline] => 0
            
[virtualserver_maxclients] => 32
            
[virtualserver_uptime] => 112
            
[virtualserver_name] => TeamSpeak ]IServer
            
[virtualserver_autostart] => 1
            
[virtualserver_machine_id] => 
        )

    [
8] => Array
        (
            [
virtualserver_id] => 9
            
[virtualserver_port] => 9995
            
[virtualserver_status] => online
            
[virtualserver_clientsonline] => 0
            
[virtualserver_queryclientsonline] => 0
            
[virtualserver_maxclients] => 32
            
[virtualserver_uptime] => 112
            
[virtualserver_name] => TeamSpeak ]IServer
            
[virtualserver_autostart] => 1
            
[virtualserver_machine_id] => 
        )

    [
9] => Array
        (
            [
virtualserver_id] => 10
            
[virtualserver_port] => 9996
            
[virtualserver_status] => online
            
[virtualserver_clientsonline] => 0
            
[virtualserver_queryclientsonline] => 0
            
[virtualserver_maxclients] => 32
            
[virtualserver_uptime] => 111
            
[virtualserver_name] => TeamSpeak ]IServer
            
[virtualserver_autostart] => 1
            
[virtualserver_machine_id] => 
        )




Dort alle Ports auslesen und dann halt die funktionen vom Script abarbeiten.


Wenn man alles einzeln macht, sprich immer wieder erneut aufrufen würde es funktionieren, aber ich habe keine Ahnung wie man das realisieren kann, dass man sagt:
Das sind deine Ports (9987-9996), mit diesen musst du dich jeweils verbinden und dann die Monatsuseranzahl der jeweiligen Server anzeigen.

Sollte eig. mit einem foreach gehen. Nur wie ?
Freakli ist offline   Mit Zitat antworten
Alt 23.01.2011, 21:59  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Die Arraystruktur hast du dort doch. Geh jedes Array durch, und dann kannste den Port doch in jedem Element auslesen. Soweit solltest du das schon selbst hinbekommen.
Flor1an ist offline   Mit Zitat antworten
Alt 24.01.2011, 12:32  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von Freakli Beitrag anzeigen
PHP-Code:
// Da ist ne Schleife für alle Array-Einträge.  
foreach($servers['data'] as $server) {

echo 
'<pre>'.print_r($server['virtualserver_port'],true).'</pre>';
// hier wird der Port selektiert    
$ts3->selectServer($server['virtualserver_port']);
// und dann passiert nix mehr... nächster Sxchleifendurchlauf
}
// hier ist die Schleife wieder zu Ende... 

// und jetzt kommt erst die "Arbeitsschleife. Hier wird mit dem zuletzt selektierten Sever gearbeitet.
while($clientdblist=$ts3->getElement('data'$ts3->clientDbList($start_while$duration_while))) 
Kombiniere die foreach und die while-Schleife richtig, dann klappts auch mit den Nachbarn
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 24.01.2011, 15:51  
Benutzer
 
Registriert seit: 10.01.2009
Beiträge: 51
Freakli befindet sich auf einem aufstrebenden Ast
Standard

Erstmal danke für die Hilfe,
leider ergibt das nicht das gewünschte Ergebniss.
Die Ports alle auslesen hätte ich auch schon gehabt. Aber er zeigt mir immer noch nicht für jeden Port/Server den Counter/Prozent.

Code:
9987

9988

9989

9990

9991

9992

9993

9994

9995

9996

Gefährdeter Server!!!
0.321
Gehört da jetzt wieder ne foreach schleife bei den abfragen der bereits vorhanden schleifen?
Bin absolout neuling mit foreach & while schleifen (ohne Mysql )
Freakli ist offline   Mit Zitat antworten
Alt 24.01.2011, 16:11  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Ja, weil du erst in Schleife Nr. 1 alle Ports ausliest und den Server selektierst, dann aber NACH der Schleife Nr. 1 die Schleife Nr. 2 ausführst, die mit dem verbundenen Server arbeiten soll. Da die Schleifen aber nacheinander abgearbeitet werden, wird nur mit dem zuletzt verbundenen Server gearbeitet.

Schachtel die Schleifen:
PHP-Code:
// Alle Serverports durchgehen
foreach($alleServer as $einServer) {
  
// TS-Objekt mit einem Server verbinden
  
$ts3->selectServer(<Port von $einServer>);
  
// JETZT mit dem verbundenen Server arbeiten
  
while($ts3->getElement()) {
    
// mache was mit dem Element des Servers.
  
}
  
// hier ist die Arbeit mit dem aktuellen Server erledigt.
  // ggfs. sollte man noch $ts3 disconnecten, bevor man 
  // im nächsten foreach-Durchlauf den nächsten Port anspricht
}
// Hier sind alle Serverports abgearbeitet. 
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 24.01.2011, 16:45  
Benutzer
 
Registriert seit: 10.01.2009
Beiträge: 51
Freakli befindet sich auf einem aufstrebenden Ast
Standard

Nunja, soweit war ich auch schon... Leider gibt es keine Disconect Funktion in der Klasse.
Die Ausgabe ergibt nun folgendes:

Code:
9987

Gefährdeter Server!!!
0.32
1

9988

Gefährdeter Server!!!
0.64
2

9989

Gefährdeter Server!!!
0.96
3

9990

Gefährdeter Server!!!
1.28
4

9991

Gefährdeter Server!!!
1.6
5

9992

Gefährdeter Server!!!
1.92
6

9993

Gefährdeter Server!!!
2.24
7

9994

Gefährdeter Server!!!
2.56
8

9995

Gefährdeter Server!!!
2.88
9

9996

Gefährdeter Server!!!
3.2
10
Das heißt, es wird immer verdoppelt.
Die Monatsuser anzahl wird von 1 auf 10 Hochgezählt, liegt wohl an dem $i++
Entweder packe ich das ganze von der falschen Seite an, oder kenne mich nicht aus ^^
Freakli ist offline   Mit Zitat antworten
Alt 28.01.2011, 13:45  
Benutzer
 
Registriert seit: 10.01.2009
Beiträge: 51
Freakli befindet sich auf einem aufstrebenden Ast
Standard

Darf ich "Pushen" da immernoch keine Lösung vorhanden ist?
Freakli ist offline   Mit Zitat antworten
Alt 28.01.2011, 13:54  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

code?
cycap ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sessions in einem Users Online Counter chunky PHP Einsteiger 15 27.11.2010 14:30
eingefügter Javascript Counter alex9787 PHP Tipps 2010 7 20.07.2010 11:38
Sockets -&amp;gt; Prüfen, ob ein neuer Client verbindet? Duesi PHP Tipps 2009 3 07.07.2009 22:25
Scriptangebot 1 Klick Counter Hosting Script Charbel Scriptbörse 0 23.06.2009 07:43
[Erledigt] Kann keine Umlaute im mysql client eingeben Oger Datenbanken 9 02.04.2009 11:54
[Erledigt] Searchstring speichern mit counter gene PHP Tipps 2008 22 29.08.2008 12:53
Counter in "selbstgestrickte" Homepage - wie? magro PHP Tipps 2008 11 30.03.2008 16:37
Zum eigenen Lernen: FTP Client für Filezilla dh1sbg PHP Tipps 2007 1 09.04.2007 10:57
ein counter - und berechnungen netti PHP Tipps 2005-2 11 24.10.2005 21:03
Counter funktioniert, aber trotzdem wird Fehler gezeigt ... PHP Tipps 2005 4 07.03.2005 17:56
Suche Counter Script Beitragsarchiv 8 17.01.2005 13:42
Problem mit counter HTML, Usability und Barrierefreiheit 10 12.01.2005 06:04
Counter für registrierte user PHP Tipps 2004-2 3 26.12.2004 11:32
counter für gallerie Sclot PHP Tipps 2004 2 05.07.2004 15:36
Problem mit einem Counter JeeZ PHP Tipps 2004 6 18.06.2004 13:36

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ts3 status script, ts3 sonderzeichen, virtualserver_machine_id, ts3 php, ts3admin.class.php tutorial, ts3admin.class.php, ts3 status script php, ts3 status php, ts3 besucherzähler, sonderzeichen für ts3, sonderzeichen ts3, ts3 php status, ts3 php script, ts3 counter, php ts3 script, ts3 client php, ts3admin.class.php example, ts3 client zähler, php ts3 user auslesen, virtualserver_port 9991

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:57 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum