Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Performance Tuning

    deepblue

    • Schreiberling
    • Beiträge: 291
    • Geschlecht:
    Performance Tuning
    Antwort #30 am: 19. Januar 2011, 08:57:55
    Habe mir mal gerade mal den Shop angeschaut, Parse Time: 1.310s das ist doch in Ordnung!  :)

    Wir haben bei uns im Shop (www.bueroartikel24.de) auch so viele Hersteller gelistet. Der ganze Shop läuft mit angezogener Handbremse. Wir haben im Durchschnitt eine Parse Time: von ca. 6-8 Sekunden und mehr. Leider kann mir auch keiner so recht sagen woran es liegt.

    Kann es wirklich an den Herstellern liegen?  :?

    franky_n

    • Experte
    • Beiträge: 4.950
    Performance Tuning
    Antwort #31 am: 19. Januar 2011, 09:24:48
    Hi deepblue,

    naja wäre einfach mal zu testen! ;)

    Nimm doch einfach mal auf der Startseite (falls vorhanden) die Herstellerbox z.B. raus indem Du die im Template mit {*box_MANUFACTURERS*} und in der boxes.php (wichtig ansonsten würde er ja trotzdem die DB durchsuchen) ebenfalls auskommentierst.

    Wenns dann runter geht auf 2 Sekunden weist Du wo der Flaschenhals ist.

    Viele Grüße

    Franky

    deepblue

    • Schreiberling
    • Beiträge: 291
    • Geschlecht:
    Performance Tuning
    Antwort #32 am: 19. Januar 2011, 09:42:24
    @ franky_n

    Das werde ich gleich heute Abend ausprobieren. Vielen Dank für deine super Hilfe! :-)
    Das mit dem auskommentieren habe ich schon verstanden. Also ein mal in der index.html (Template) ist mir klar. Meinst du die boxes.php im Ordner "/templates/xtc5/source/boxes.php"?

    Wie kommentiere ich es in der boxes.php aus?

    Code: PHP  [Auswählen]
    // include(DIR_WS_BOXES . 'manufacturers.php');
     
    ist das so richtig?

    Anonym

    • Gast
    Performance Tuning
    Antwort #33 am: 19. Januar 2011, 09:56:01
    Hallo,

    mach doch bitte mal mit phpMyAdmin einen Export deiner Tabelle manufacturers und lade die hier (gezippt) auf oder mail sie mir durch.
    Wenn mir schon keiner glaubt, was ich in http://www.modified-shop.org/forum/topic.php?id=10693&page=2#post-104869 geschrieben habe würde ich das gerne mit Zahlen untermauern.

    Gruß
     Kristian

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.369
    • Geschlecht:
    Performance Tuning
    Antwort #34 am: 19. Januar 2011, 10:02:46
    [...]
    Wie kommentiere ich es in der boxes.php aus?

    Code: PHP  [Auswählen]
    // include(DIR_WS_BOXES . 'manufacturers.php');
     
    ist das so richtig?

    Ja, genau so!

    Grüße

    Torsten

    franky_n

    • Experte
    • Beiträge: 4.950
    Performance Tuning
    Antwort #35 am: 19. Januar 2011, 10:49:02
    Hallo kristian,

    man könnte es auch positiv sehen, dass ich damit Deine Aussage untermauer! :whistle:

    Viele Grüße

    Franky

    DocBobo

    • Neu im Forum
    • Beiträge: 12
    Performance Tuning
    Antwort #36 am: 19. Januar 2011, 16:42:03
    Habe gerade mal ins Query Log geguckt und gesehen, dass da ziemlich viele

    Code: SQL  [Auswählen]
    SELECT manufacturers_id, manufacturers_name FROM manufacturers ORDER BY manufacturers_name

    zu finden sind. Eine kleine Suche hat zumindest bei mir ergeben, dass die alle aus der "shopstat_functions.inc.php" kommen. Dort wird dieses Statement für jeden Link auf einen Hersteller ausgeführt.

    Habe daher mal folgendes

    Code: PHP  [Auswählen]
            $manufacturers = xtc_get_manufacturers();

    durch

    Code: PHP  [Auswählen]
            global $manufacturers_cache;
            if (!isset($manufacturers_cache)) {
                    $manufacturers_cache = xtc_get_manufacturers();
            }
            $manufacturers = $manufacturers_cache;

    ersetzt. Dadurch habe ich jetzt nur noch ein Statement. Kannst ja mal ausprobieren.

    DocBobo

    • Neu im Forum
    • Beiträge: 12
    Performance Tuning
    Antwort #37 am: 19. Januar 2011, 16:56:39
    Tatsächlich kann man das Ganze noch weiter treiben, da direkt im Anschluss durch die Liste iteriert wird, um den passenden Hersteller-Namen zu finden. Wenn man also gleich eine id -> text Map aufbaut und die cache, dann bringt das noch ein bisschen mehr. Kann bei mir (38 Hersteller) eine Verbesserung von gut 10% feststellen...

    Wenn ich jetzt keinem Phantom aufgesessen bin, dann kann ich die Änderung auf Wunsch gerne mal hochladen...

    Anonym

    • Gast
    Performance Tuning
    Antwort #38 am: 19. Januar 2011, 17:58:32
    Hallo,

    @DocBobo
    Bevor du dir zu viel Arbeit machst, In Version 1.06 wird shopstat_functions.inc.php anders aussehen.
    Schau dir ggf. den trunk an.

    @Franky
    Bei dir bin ich sicher, dass du mich verstanden hast.
    Es ging mir um das Posting von dem Büroartikelmensch.

    Gruß
     Kristian

    DocBobo

    • Neu im Forum
    • Beiträge: 12
    Performance Tuning
    Antwort #39 am: 19. Januar 2011, 18:16:32
    @kristian: Soviel anders sieht das im trunk aber irgendwie nicht aus, letzte Änderung an shopstat_functions.inc.php ist irgendwie auch 4 Monate alt. Habt ihr irgendwo noch 'nen anderen Trunk versteckt? ;)

    Anonym

    • Gast
    Performance Tuning
    Antwort #40 am: 19. Januar 2011, 18:33:30
    ich habe da mit Sicherheit nichts versteckt. ;-)
    Schau mal hier: BUG in ShopStat: Privatsph-auml%3Bre-und-Datenschutz:_:2.html

    Evtl. wirst du daraus schlauer als ich.

    Gruß
     Kristian

    DocBobo

    • Neu im Forum
    • Beiträge: 12
    Performance Tuning
    Antwort #41 am: 19. Januar 2011, 18:46:13
    Ein bisschen schlauer bin ich daraus geworden, wenn ich allerdings nicht komplett falsch gewickelt bin, dann überschneidet sich die Umlaut-Änderung zumindest nicht mit dem xtc_get_manufacturers() Aufruf. Sowohl im Trunk als auch in dem Anhang des anderen Beitrages ist das beides noch drin. Außer, du hast *doch* was versteckt. :D

    deepblue

    • Schreiberling
    • Beiträge: 291
    • Geschlecht:
    Performance Tuning
    Antwort #42 am: 19. Januar 2011, 19:46:24
    Kurze Rückmeldung:

    Habe die Hersteller-Box auskommnetiert und die "Parse Time" ist nun bei 0.424s.
    Vielen Dank für diesen super Tipp! :-)

    web28

    • modified Team
    • Beiträge: 9.404
    Performance Tuning
    Antwort #43 am: 20. Januar 2011, 17:24:19
    Habe gerade mal ins Query Log geguckt und gesehen, dass da ziemlich viele

    Code: SQL  [Auswählen]
    SELECT manufacturers_id, manufacturers_name FROM manufacturers ORDER BY manufacturers_name

    zu finden sind. Eine kleine Suche hat zumindest bei mir ergeben, dass die alle aus der "shopstat_functions.inc.php" kommen. Dort wird dieses Statement für jeden Link auf einen Hersteller ausgeführt.

    Habe daher mal folgendes

    Code: PHP  [Auswählen]
            $manufacturers = xtc_get_manufacturers();

    durch

    Code: PHP  [Auswählen]
            global $manufacturers_cache;
            if (!isset($manufacturers_cache)) {
                    $manufacturers_cache = xtc_get_manufacturers();
            }
            $manufacturers = $manufacturers_cache;

    ersetzt. Dadurch habe ich jetzt nur noch ein Statement. Kannst ja mal ausprobieren.

    Hallo DocBobo,

    das ist ein super Tipp mit dem Hersteller Cache! :mrgreen:

    Ich würde das direkt in die Funktion einbauen, dann greift das auch noch an anderen Stellen.

    EDIT 2011-01-22: global auf static geändert!
    EDIT 2011-01-28: Fehler bei Aufruf in der erweiterten Suche behoben!

    inc/xtc_get_manufacturers.inc.php

    Code: PHP  [Auswählen]
    function xtc_get_manufacturers($manufacturers_array = '') {
        //BOF - web28 - 2011-01-20 - set manufacturers cache for better performance - thanks to DocBobo
        static $manufacturers_cache;

        if (isset ($manufacturers_cache) && $manufacturers_array == '') return $manufacturers_cache;
        //BOF - web28 - 2011-01-20 - set manufacturers cache for better performance - thanks to DocBobo

        if (!is_array($manufacturers_array)) $manufacturers_array = array();

        $manufacturers_query = xtc_db_query("select manufacturers_id, manufacturers_name from " . TABLE_MANUFACTURERS . " order by manufacturers_name");
        while ($manufacturers = xtc_db_fetch_array($manufacturers_query)) {
          $manufacturers_array[] = array('id' => $manufacturers['manufacturers_id'], 'text' => $manufacturers['manufacturers_name']);
        }

        //BOF - web28 - 2011-01-20 - set manufacturers cache for better performance - thanks to DocBobo
        $manufacturers_cache = $manufacturers_array;
        //BOF - web28 - 2011-01-20 - set manufacturers cache for better performance - thanks to DocBobo

        return $manufacturers_array;
      }
    Bitte mal testen!

    Gruss Web28

    Cookie

    • Fördermitglied
    • Beiträge: 274
    Performance Tuning
    Antwort #44 am: 31. Januar 2011, 19:00:52
    Hallo,

    ich habe in den letzten Tagen noch etwas mit der Performance rumgetestet.

    Die Änderung der xtc_get_manufacturers ist super und bringt ca. 50 %.

    Mir ist auch aufgefallen, dass die SEO Optimierten URLs teilweise sehr viel Zeit brauchen. Wenn ich die Funktion abschalte, geht die parse Zeit um weitere 20-30 % runter.

    Aktuell habe ich das Caching der DB und der Seiten wieder aktiv und GZIP ausgeschaltet. Damit sind die Zeiten wieder ok.

    Ich habe auch das PHP-Modul eaccelerator getestet. Es bringt bei XTC aber erstaunlich wenig.

    Viele Grüße
    Christian

    4 Antworten
    4395 Aufrufe
    18. März 2011, 18:08:41 von ichbins
    28 Antworten
    18639 Aufrufe
    11. Mai 2013, 22:48:25 von MichaV
    20 Antworten
    10069 Aufrufe
    01. Juli 2015, 11:03:34 von swolfram [templatix]
    15 Antworten
    7267 Aufrufe
    08. August 2012, 09:00:29 von keineLustmehr