Speicherverbrauch/CPU Auslastung festellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Speicherverbrauch/CPU Auslastung festellen

    Ich habe folgendes Problem: mein Programm analysiert Log Dateien und versucht sie besser darzustellen. Zu diesem zwecke hole ich einiges an Daten in meinen Arbeitsspeicher. Da ja bekanntlich LogDateien sehr groß werden können, habe ich dauerhaft Probleme das die Scriptausführungszeit nicht ausreicht oder der Speicher voll ist. Jetzt will mir der ServerAdmin verständlicher weise auch nicht unendlich viel zur Verfügung stellen, also bin ich immer wieder dabei meine Scripte irgendwie zu verbessern. Meine Resultate sind da auch nicht schlecht, aber auch nicht gut genug.
    Somit die Frage: kann ich mir irgendwie Anzeigen lassen wie hoch der Speicherverbauch zum Beispiel eines Objektes ist? Oder wie hoch die CPU ausgelastet ist oder ob sie vielleicht garnicht beansprucht wird und ich nur auf I/O Zugirffe warte?
    Hilft mir der PHPDebugger da irendwie? Oder gibt es PHP Funktionien / Klassen in der Richtung?
    Und für alle weiteren allg. Quellen zur Laufzeitverbesserung und Speichermanagment würde ich mich freuen.

    danke

    P.S: achso die einfache Zeitmessung für Scriptteile nutze ich schon.

  • #2
    Soweit ich weiß ist das mit den Standartextensions von PHP nicht möglich...aber ich kann mich auch irren
    Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
    (Albert Einstein)

    Kommentar


    • #3
      vielleicht solltest du mehr als ein logdatei erstellen (bspw. täglich eine neue), denn sie müssen nicht unbedingt "bekanntlich" groß sein.

      Kommentar


      • #4
        Den Server-Load (LINUX/UNIX) bekommst Du mit dieser hübschen Funktion:
        PHP-Code:
        function load() {
            
        $result NULL;
            if (
        $stats = @exec("uptime")) {
                
        preg_match("/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/"$stats$regs);
                
        $result = array($regs[1], $regs[2], $regs[3]);
            }
            return 
        $result;

        Weitere Informationen sollten sich beim Kapitel LXXIX. PHP Options&Information des Handbuchs erschließen ...
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          hmmm....stimmt
          Mit exec() geht es. Auf *nix Systemen kannst du einfach ein Perl/C/sonstwas Script schreiben das dir das ganze Zeugs zurückliefert. Dann rufst du das script mit exec() auf und schon kannst dus ausgeben.
          Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
          (Albert Einstein)

          Kommentar


          • #6
            @goth: cool danke. werde die funktion mal testen und hoffen das mir meine nicht vorhandenen root rechte dazwischen schießen (das admins auch immer so auf ihre beharren müssen *grml*)
            und das handbuch kapitel auch mal intensiv lesen. hatte zwar schon im handbuch rumgesucht, aber da gibt es viele wo ich immer noch nicht genau weiß wieso, warum und weshalb.

            @graf: also das ist die täglich neue mit 40mb. diese splitte ich schon mehrfach auf. also sollte ich wohl lieber mehr energie reinstecken um zu versuchen das programm möglichst effizient zu schreiben. ok vielleicht sollten manche sachen auch net mit PHP gemacht werden, aber dafür ist die zeit fürs projekt net mehr da.

            @samson2k: die sollte auch alles bei windoof systemen gehen. aber mit arbeit halt und standart sachen währen da schöner. aber mal gut das der entwicklungsserver linux ist und nicht wie mein arbeitsrechner windoof

            Kommentar


            • #7
              super ich habe nun was ich will. hoffentlich kriege ich es auch richtig angewendet. aber das ist ja dann mein problem.
              um die CPU last und den speichernverbrauch zu kriegen habe ich den linux befehl ps genommen. vorher mir mit getmypid die ProzessId geholt. nun kann ich mit der option u und p $ProzessId alle infos kriegen.

              PHP-Code:
              $pid getmypid();
              $stats = @exec("ps u p ".$pid);
              echo 
              $stats
              wenn ich dann damit richtig schön umgehen kann werde ich vielleicht dazu noch ne klasse veröffentlichen, mal schaun. aber danke nochmal

              Kommentar


              • #8
                http://www.stat.ee.ethz.ch/mrtg/

                Kommentar


                • #9
                  Original geschrieben von goth
                  Den Server-Load (LINUX/UNIX) bekommst Du mit dieser hübschen Funktion:
                  PHP-Code:
                  function load() {
                      
                  $result NULL;
                      if (
                  $stats = @exec("uptime")) {
                          
                  preg_match("/averages?: ([0-9\.]+),[\s]+([0-9\.]+),[\s]+([0-9\.]+)/"$stats$regs);
                          
                  $result = array($regs[1], $regs[2], $regs[3]);
                      }
                      return 
                  $result;

                  Weitere Informationen sollten sich beim Kapitel LXXIX. PHP Options&Information des Handbuchs erschließen ...

                  Hi,

                  Ich glaub Ich hab grad ein Brett vorm Kopf. Ich will den oben gezeigten Code in meine Website einbauen. Logischerweise wird nichts angezeigt, da eine print bzw. echo Funktion fehlt.
                  Als Ich nachträglich was einbauen wollte, bin Ich dann irgendwie nicht weiter gekommen...

                  Sorry - Kann mir jemand weiterhelfen?


                  Vielen Dank im Voraus
                  Grüße, Chrissi
                  Our Dreams are Wings

                  Kommentar


                  • #10
                    http://www.php-resource.de/manual.php?p=functions
                    Die Zeit hat ihre Kinder längst gefressen

                    Kommentar


                    • #11
                      Original geschrieben von Chrissi007
                      Hi,

                      Ich glaub Ich hab grad ein Brett vorm Kopf. Ich will den oben gezeigten Code in meine Website einbauen. Logischerweise wird nichts angezeigt, da eine print bzw. echo Funktion fehlt.
                      Als Ich nachträglich was einbauen wollte, bin Ich dann irgendwie nicht weiter gekommen...

                      Sorry - Kann mir jemand weiterhelfen?


                      Vielen Dank im Voraus
                      Dabei handelt es sich auch nur um eine Funktion...


                      EDIT: Hab nun erst den letzen Post auf Seite 1 gesehen... - sorry

                      Kommentar


                      • #12
                        Hmm....

                        Also Ich probier da jetzt schon seit gestern rum und hab mir auch nochmal ein paar Beispiele + Manual angeschaut.
                        echo, print, print_r...
                        Anweisungen innerhalb der Funktion, die Funktion aufrufen, usw...

                        Vielleicht mach Ich auch irgendwo einen grundlegenden Fehler. Bin in Sachen php noch ein Neuling *g*

                        Vielleicht kann mir ja jemand weiterhelfen Ich probier in der Zwischenzeit weiter an dem Script rum
                        Grüße, Chrissi
                        Our Dreams are Wings

                        Kommentar


                        • #13
                          wenn eine funktion einen rückgabewert hat - dann wird dieser beim aufruf der funktion doch einfach an die stelle zurückgegeben, wo eben der aufruf stattfindet.

                          wo ist jetzt das problem, auf
                          PHP-Code:
                          echo funktion(); 
                          zu kommen ...?
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            PHP-Code:
                            function load() {
                                
                            $result NULL;
                                if (
                            $stats = @exec("uptime")) {
                                
                            preg_match("/averages?: ([0-9.]+),[s]+([0-9.]+),[s]+([0-9.]+)/"$stats$regs);
                                    
                            $result = array($regs[1], $regs[2], $regs[3]);
                                }
                                return 
                            $result;
                            }
                            echo 
                            load(); 
                            Das hab Ich natürlich schon probiert aber bei mir wird einfach nix ausgegeben

                            Ich hab einen Unix, managed Server bei www.all-inkl.com
                            Grüße, Chrissi
                            Our Dreams are Wings

                            Kommentar


                            • #15
                              Das hab Ich natürlich schon probiert aber bei mir wird einfach nix ausgegeben
                              dann versuch doch mal herauszufinden, wo der fehler liegt, debugging eben ...

                              - var_dump $result ...
                              - var_dump $regs
                              etc.
                              Die Zeit hat ihre Kinder längst gefressen

                              Kommentar

                              Lädt...
                              X