1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Template ist extrem langsam und ich weiß nicht warum

Dieses Thema im Forum "Konfiguration" wurde erstellt von funkytown, 13. Juni 2009.

  1. funkytown

    funkytown Well-Known Member

    Registriert seit:
    14. September 2008
    Beiträge:
    125
    Zustimmungen:
    0
    Hallo,

    hab mir ein kleines Template gemacht, damit ich meine Termine über das Plug-In "RS Event" auf einer Seite (page.php) ausgeben kann.

    Das funktioniert auch über das Template sehr gut. Allerdings dauert es bis zu 10 Sekunden(!) bis die Seite angezeigt wird. Und ich weiß nicht warum. Alle anderen Seiten (und Artikel) werden normal angezeigt. Es muss also am Template liegen.

    Hat jemand einen Tipp, was im Code die Bremse sein könnte?

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  2. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Das einzige, was hier richtig viel Zeit kosten kann ist das hier:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Ich nehme mal an, das man damit 50 Termine abholen kann. Wenn das zugrunde liegende Plugin "schlecht" im Sinne von Performance geschrieben ist, dann macht es dazu 50 Abfragen in die Datenbank, was deine Zeit problemlos erklären würde.
    Ich würde den Code durchsehen, der dabei ausgeführt wird und/oder den Autor befragen, wie das schneller zu machen ist.
     
  3. marX

    marX Well-Known Member
    Ehrenmitglied

    Registriert seit:
    5. Oktober 2006
    Beiträge:
    12.943
    Zustimmungen:
    0
    Ich bin mal so frei: :D
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Viel Spaß beim durchsehen codestyling. ;) (Die SQL-Query sieht auf den 1. Blick okay aus)
     
  4. funkytown

    funkytown Well-Known Member

    Registriert seit:
    14. September 2008
    Beiträge:
    125
    Zustimmungen:
    0
    Oh, jetzt hab ich einen Fehler gemacht. Das war mein altes Template vom Plugin "Event Calendar". Ich war mit dem Plug-In aber extrem unzufrieden und bin auf das "RS Event" gewechselt.

    Hier nun das richtige Template, das extrem lange braucht.

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  5. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Es gibt mindestens 2 Kandidaten für Performance Verlust:

    1. Der Query selbst
    2. Die loop über die Ergebnismenge (max. 50)
    Query

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Ein typischer LEFT JOIN über 3 Tabellen. Dabei fällt auf, dass es essentiell ist, das sowohl die Spalten p.post_status (WordPress posts Tabelle) als auch s.end (Calendar Tabelle) einen Vollindex benötigen, damit das schnell gemacht werden kann. Die beiden JOIN's provozieren aber auch einen full table scan und sind deshalb performancetechnisch gesehen suboptimal.

    Man müsste mit der Datenbank von funkytown mal einen Test machen und die Zeit für den query stoppen und ausgeben lassen. Die Datenmenge and Posts, Usern und Kalendareinträgen sind hier essentielle Größen, da das ein kubische Komplexität O(n^3) hat!

    die loop
    Es werden alle gefunden Ergebnisse mittels einer Funktion, die ich nicht kenne, pro Zeile und pro Element der Zeile mittels Templates formatiert und ausgegeben. Was genau da passiert, kann ich nicht sehen, könnte je nach Implementierung (regexp Ersetzungen) bei 50 Eintragen und 5 Elementen auch etwas brauchen.

    Um das zu beschleunigen, kommt man um die Originaldatenbank nicht drumrum, denn die Tests sind notwendig. Die oben angegebenen Indizierungen in der DB nachzurüsten, kann aber nicht schaden und könnte das Problem schon deutlich mindern.
     
  6. codestyling

    codestyling WPD-Team

    Registriert seit:
    30. März 2008
    Beiträge:
    1.904
    Zustimmungen:
    0
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Wenn man da 'zig ID's mit oder zusammenpappt, dann kann die Abfrage performace-technisch nur in die Hose gehen.
    Und die nachfolgende Schleifenbehandlung der Ergebnisse benutzt massenweise array preg_exp, die man auch messen müsste.
    Ohne die Eckdaten der Datenbank (Postanzahl, Kalendereinträge usw.) die hier eine Rolle spielen, kann man sich kein Bild machen. Beide Plugins sind aber von der Art und Weise der Datenabfrage und Aufbereitung her optimierungsbedürftig.
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden