lachesis: langsame Seitengenerierung

Hallo,

Ich habe vor geraumer Zeit einen rel. komplizierten elektronischen Stundenzettel
erstellt.
Zu Beginn wurde die Seite in ca. 1 Sekunde aufgebaut.
Jetzt habe ich in den letzten Wochen einige kleine Funktionen
hinzugefügt und mußte mit erschrecken feststellen, dass nun manchmal bis
zu 5 Sekunden vergehen bis die Seite erstellt ist.

Wie geht man vor um die "Zeitfresser" zu lokalisieren?
Ich wüßte nämlich schon gerne wo der Haken liegt.

Grüßle, lach

  1. Ich würde eine Logdatei anlegen und bei dem Programmlauf immer wieder an geeigneten Stellen Kontrollausgaben in diese Logdatei machen. Dabei kannst Du zusätzlich immer die Systemzeit auslesen und mit hinein schreiben.
    Das verlangsamt zwischendurch die Ausführung zwar nochmal aber relativ solltest Du Zeitfresser finden.

    1. Hello,

      Ich würde eine Logdatei anlegen und bei dem Programmlauf immer wieder an geeigneten Stellen Kontrollausgaben in diese Logdatei machen. Dabei kannst Du zusätzlich immer die Systemzeit auslesen und mit hinein schreiben.
      Das verlangsamt zwischendurch die Ausführung zwar nochmal aber relativ solltest Du Zeitfresser finden.

      Genau. Da schau Dir mal register_tick_function() und die recht ausführlichen Userbeispiele an.

      Diese Tick-Setter kannst Du überall in Deinem Script unterbrigen. Ich würde sie gleich bedingt von einer Konstante if (TICKDEBUG [== true]) o.ä. aktivieren, dann kannst Du sie später zur Not auch drin lassen im Script.

      Grüße

      Tom

  2. Hallo lachesis,

    Wie geht man vor um die "Zeitfresser" zu lokalisieren?
    Ich wüßte nämlich schon gerne wo der Haken liegt.

    phpedit hat eine funktion, die dir anzeigt, welche codeteile wieviel zeit brauchen.
    adresse? google. ;-)

    freundl. Grüße aus Berlin, Raik

  3. Hallo,

    Danke für die wirklich hilfreichen Tipps.

    Ich hab das jetzt mal ganz simpel implementiert,
    indem das Script an speziellen Punkten kommentierte Zeiten in ein
    Textfile schreibt.

    Dabei zeigt sich der Übeltäter ganz deutlich.

    Diese Abfrage benötigt mehr als 1.5 Sekunden.

    SELECT pid, left(pname,25) as ppname, left(name,10) as nname, pnr, max(datum) AS maxdatum
            FROM stunden, projektnr, kunden
            WHERE pid = projektnr.id AND kid = kunden.id AND close = 0 AND gedeckt!=3
            GROUP BY pid
            HAVING maxdatum > (date_sub(current_date, INTERVAL 30 DAY))
            ORDER BY nname

    Leider hab ich keine Ahnung wie ich die schneller hinbekomme.
    Ehrlichgesagt war ich froh sie überhaupt hin zu bekommen ;-)

    Grüßle, lach

    1. Hallo,

      ein geeigneter Index auf der Datenbank sollte helfen. Für einen Datenbankserver sollte so eine Abfrage eigentlich ein Witz sein, probleme gibt es erst bei riesen Datenmengen oder massig parallelen Zugriffen.

      Gruss

      Marko

      1. Hallo Marko,

        ich dachte auch, dass dies eigentlich nicht der Rede wert wäre. Schließlich
        greifen nie mehr als 7 Leutchen gleichzeitig zu.
        Während meinen Tests war ich sogar der Einzige!

        Welche Indizes würdest Du denn anlegen?

        Grüßle, lach