Beiträge von traumhaeftling

    Hallo Zusammen,


    ihr seid die Besten! Es scheint jetzt alles wunderbar zu funktionieren! Hat seit dem Teststart keine Probleme mehr gegeben und es läuft gut durch. Vorallem bleibt es jetzt stabil bei 35 MB!


    Ich werde das ganze jetzt als Service einrichten, damit es vom System her immer gestartet wird und hoffe es trägt schön weiterhin alle Werte ein ;)


    Vielen Danke für die tolle Unterstützung!
    Ich setzte es jetzt mal auf gelöst.

    So wie du es oben hattest dürfte es nicht funktionieren. Weil du den inhalt der Inputbox benötigst. Deshalb GUICtrlRead :)


    Edit: du hast es ja davor in die Variable geschrieben. Nur die falsche Variable aufgerufen. Es fehlte ein s unten bzw. ein s oben war zu viel :P

    Einfach nach dem alles augegraut wurde eine IF Abfrage einbauen:

    if StringLen(GUICtrlRead($input)) = 7 Then
    GUICtrlSendMsg($ok_button, $BM_CLICK, 0, 0)
    EndIf


    Wenn der Inhalt der Inputbox passt musst du nur noch eine Msg an dein Button schicken. Die Funktion die dann deinem Button zugewiesen ist, wird durchgeführt.


    Damit der Button aber nicht immer wieder angeklickt wird, da die ifabfrage immer true ist (die 7 Zeichen in der Inputbox stehen ja immer noch drin musst du noch etwas einbauen, so dass die If Abfrage auf false gesetzt wird.
    Eventuell einfach die Inputbox leeren, wenn nicht mehr benötigt.

    Mit der Control ID würde es funktionieren, wenn man wirklich alle Buttons ändern will.
    Ich hab gedacht, dass die Umstell Buttons (die 3 Buttons, die die Schriftart verändern) nicht mit geändert werden müssen.
    Wobei, wenn man die direkt hintereinander am anfang erstellt fängt man halt erst bei Control ID 3 hochzuzählen.


    Hast vollkommen recht, nur die Reihenfolge muss richtig bleiben.

    Ja, musst du dann. Du kannst aber auch alle Buttons in ein array schreiben und dann einfach mit einer for schleife die Schriftart ändern:

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 320, 173, 255, 247)
    ;~ $Label1 = GUICtrlCreateLabel("Label1", 105, 24, 127, 52)


    $Button1 = GUICtrlCreateButton("16", 24, 90, 33, 25)
    $Button2 = GUICtrlCreateButton("32", 72, 90, 33, 25)
    $Button3 = GUICtrlCreateButton("48", 120, 90, 33, 25)



    GUISetState(@SW_SHOW)


    #EndRegion ### END Koda GUI section ###
    GUISetState()



    global $Button22= GUICtrlCreateButton("1", 16, 67, 75, 25)
    global $Button21= GUICtrlCreateButton("2", 16, 122, 75, 25)
    Global $Button5 = GUICtrlCreateButton("3", 16, 232, 75, 25)
    Global $Button6 = GUICtrlCreateButton("4 4", 16, 177, 75, 25)
    Global $Button7 = GUICtrlCreateButton("5 4", 100, 177, 80, 25)
    global $Button8 = GUICtrlCreateButton("6", 100, 67, 80, 25)
    global $Button9 = GUICtrlCreateButton("7 7", 16, 20, 100, 25)


    Global $array[4] = [$Button22, $Button21, $Button8, $Button9]


    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    For $i = 0 to 3
    GUIctrlSetFont($array[$i], 12, 400, 0, "MS Sans Serif")
    Next


    Case $Button2
    For $i = 0 to 3
    GUIctrlSetFont($array[$i],14, 400, 0, "MS Sans Serif")
    Next
    ;~ $Label1 = GUICtrlCreateLabel("Label1", 105, 24, 127, 52)



    Case $Button3
    For $i = 0 to 3
    GUIctrlSetFont($array[$i],20, 400, 0, "MS Sans Serif")
    ;~ $Label1 = GUICtrlCreateLabel("Label1", 105, 24, 127, 52)
    Next


    EndSwitch
    WEnd
    Exit

    Hallo Zusammen!


    Ich hab das ganze jetzt mal ein Wochende durchlaufen lassen und bin zu folgenden Ergebnissen gekommen:

    • Das Aufhängen wurde auf jeden Fall von der Sessions Funktion ausgelöst! Es ist das komplette Wochenden ohne Fehler auf 3 Servern durchgelaufen (2 Min takt, 4000 Werte)

    Eventuell benötigt es nen sleep. Arbeite noch dran.


    • Ich hab das ganze mit meinem Skript durchlaufen lassen (Sessions Funktion hab ich rausgenommen) --> RAM Werte sind stabil geblieben und bleiben im 40MB Bereich (war davor schon so und ist verkraftbar) ;)

    Heißt --> Keine Probleme wegen dem Memory Leak.


    Nun stellt sich die Frage, wieso es mit meinem Skript stabil bleibt und mit dem überarbeiteten Skript von Aspirinjunkie nicht.


    • Ich die ADO Verbindung so eingebaut wie Aspirin es gemacht hat und es funktioniert ohne steigerung der RAM Werte!

    Heißt --> Es liegt nicht an dem Recordset aufbau! Theoretisch könnte es dann nur am Refresher bzw. an der überarbeiteten CPU Funktion liegen
    Hat jemand eine Idee wieso?

    AspirinJunkie


    Mit WMI funktioniert das leider nicht. Hab es damals schon selbst probiert und jetzt auch noch deine Skripte.
    Kommt immer 1 raus. Also wahrscheinlich nur ich selbst. Trotzdem danke!


    @Rynow danke! Ich werde das mal durchlaufen lassen und schauen, ob es sich immer noch aufhängt.

    Moin-Moin.


    Ich habe mal eine Frage an die Profis unter uns.


    Ich würde gerne nachweisen, das meine 16.000 Leitung im Tagesdurchschnitt 7.372 hat. Mein Anbieter meint, das diese Werte gar nicht möglich sind, da Messungen von den sagen ich habe 16.000.
    Ersten hatte ich noch nie wirklich genau 16.000 sondern hatte immer so 1.00 - 2.200 weniger, was hinnehmbar ist und zweitens kam das von heute auf morgen.


    Hallo Alina!
    Du wirst im Normalfall auch keine 16000 bekommen (Hat technische Gründe). 7.372 ist aber eindeutig zu wenig.
    Leider werden deine Nachweise gar nichts bringen, da man sowas ja fälschen könnte und ein Anbieter es so nicht hinnimmt (was ich verstehen kann.)
    Dein Anbieter hat bestimmt nen eigenen Speedtest. Diesen kannst du durchführen und die Daten werden an dein Anbieter übermittelt. So Haben beide Seiten die richtigen nachweise.


    Falls nicht würde ich bei denen nachhaken, was man machen kann. Ich würde dir nicht empfehlen dir die Mühe zu machen (außer du willst das auch für den Eigengebrauch). Meiner Meinung wäre das für die Katz.


    Am besten dort anrufen und dir sagen lassen, was du machen kannst.

    Ich schau meistens die Themen im Portal an, da die meisten noch die Themen der letzten 2 Tage beinhalten.
    Da schaue ich dann zuerst nach den Themen in denen ich beteiligt bin. Danach das, was mich interessiert oder wo ich mir denk "da kann ich vielleicht behilflich sein".

    Hallo zusammen,


    ich brauch die Ausgabe, wie viele User gerade auf einem Server eingeloggt sind.
    Also theoretisch die Zahl, der angemeldeten User.


    Wie im Windows Taskmanager:


    [Blockierte Grafik: http://i57.tinypic.com/33u7gg5.png]


    Code hab ich bisher das. Funktioniert auch meistens aber halt nicht immer. Außerdem hängt es sich auf, wenn ich das länger in einer Schleife abfrage.
    Gibt es da eine bessere Lösung?


    Func sessions()
    Global $PID, $Ret = ""
    $PID = Run('"' & @ComSpec & '" /c quser', '', @SW_HIDE, 0x2)


    While 1
    $Ret &= StdoutRead($PID)
    If @error Then ExitLoop
    WEnd


    $aAnzahl = StringSplit($Ret, @CRLF, 1) ;$aAnzahl[0]-2 = anzahl der angemeldeten User
    $aAnzahl = $aAnzahl[0] - 2


    EndFunc ;==>sessions

    Danke für den Tipp BugFix!


    Folgendermaßen hab ich die Fehlersuche durchgeführt:
    Nach jedem Funktionsaufruf hab ich ein FilewriteLog eingefügt.

    _FileWriteLog($hFile, "RAM wurde berechnet")


    So konnte ich festellen, welche Funktion vor dem Programmabsturz funktioniert hat! Jedes mal konnte die CPU und RAM Funktion durchgeführt werden und ist danach hängen geblieben.

    $d_CPU_mean = Round($a_CPU[1] / $a_CPU[0])
    _FileWriteLog($hFile, "CPU wurde berechnet")
    $a_RAM = _RAM() ; RAM auslesen
    _FileWriteLog($hFile, "RAM wurde berechnet")
    $d_sessions = sessions() ; Anzahl Sessions
    _FileWriteLog($hFile, "Sessions wurden berechnet")


    Sprich mein Skript bleibt nach einer Weile einfach in der Sessions Funktion stecken. Weshalb weiß ich noch nicht. Ich lass das alles jetzt mal testweiße ohne die Funktion laufen. Als Gegenprüfung.


    @AspirinJunkie, aber auch an alle die es vielleicht wissen.


    Mein Skript frisst jetzt extrem viel RAM und steigert sich sekündlich. Nach 2 Stunde hat es sich von 40 MB bis fast 100 MB gesteigert.
    War davor nicht so.


    An was könnte es liegen? Ich glaube es müsste entweder an dem Refresher liegen (was ich aber weniger glaub) oder daran, dass die ADO Verbindung immer offen ist.


    Was glaubt ihr?


    Danke an Alle für die klasse Unterstützung!

    Du regelst alles über globale Variablen. Warum nicht über Rückgabewerte der Funktionen?


    Hast natürlich recht! Hab ich mal geändert.


    Du erstellst die DB-Connection immer wieder neu - muss das sein?


    Weil ich sie immer wieder geschlossen habe, damit es nicht rund um die Uhr offen ist.
    Hat das eine Auswirkung, wenn ich es immer offen lasse?


    In deiner CPUusage erzeugst du immer wieder das WMI-Objekt. Und um die Werte abzufragen immer wieder eine extra Anfrage. Stattdessen das WMI-Objekt nur einmal erzeugen und mit einem WMI-Refresher-Objekt arbeiten.


    WMI hab ich nicht ganz kapiert, mit deinem Code unten hat es wunderbar funktioniert und ich hab es verstanden. Vielen dank!


    Deine CPU-Berechnung habe ich nicht verstanden. Im Array $array stehen die Auslastungen der einzelnen Cores. Die mittelst du später. Aber beschrieben wird es von der Funktion CPUusage(). Die Werte werden dort aber nicht drangehängt, sondern einfach überschrieben. Das heißt: Du rufst die Funktion mehrere Male innerhalb deiner 2 Minuten auf. Ins Ergebnis fließen aber nur die Werte des allerletzten Aufrufes von CPUUsage ein. Ist das so gewollt?


    Ja, es war so gewollt. So hab ich nur den Mittelwert der letzten paar Sekunden. Theoretisch ist deine Lösung aber auch gut. So hab ich immer die Mittwelwerte der letzten 2 Minuten und ich rufe nicht ständig die Funktion neu auf - Top!


    Ich habe einfach mal einiges verändert - vielleicht bringt es dich ja weiter: [$code]


    Vielen Dank für deine Mühe, hat mir seh geholfen und ich hab es mal komplett angepasst! Lasse es jetzt mal laufen und schaue ob es sich noch aufhängt. Vielleicht lag es ja an einer dieser Gründe. Ich melde mich nochmal und gebe Rückmeldung.


    Auch vielen dank an Water! Mit dem Objekt hattest du natürlich auch recht.


    btw weiß jemand wie ich ermitteln kann wo und wann mein Programm sich aufgehängt hat? Dann könnte ich die genaue Stelle finden und da ansetzen. Eventuell kann ich auch nen Thema dafür erstellen, damit Leute mit dem gleichen Problem das leichter finden.