wenn ich diese funktion richtig lese
shopware/sAdmin.php at 5.1 · shopware/shopware · GitHub
macht es bei jeden aufruf, ohne wenn und aber:
- aktive benutzer versankosten berechnungen ins
$sql_select
addieren -
$sql_select
ins$sql
addieren -
$sql
in datenbank ausführen
also wäre folgendes eine plugin was logt wie oft die versandkosten berechnet wird:
class Shopware_Plugins_Core_FoobarLogger_Bootstrap
extends Shopware_Components_Plugin_Bootstrap
{
public function install ()
{
$this->subscribeEvent(
'sAdmin::sGetDispatchBasket::after',
'onDispatchBasket'
);
return true;
}
public function onDispatchBasket (Enlight_Event_EventArgs $args)
{
Shopware()->PluginLogger()->info("sAdmin::sGetDispatchBasket ausgeführt");
}
}
wenn man dann (auch leere) warenkorb ausruft, sieht es in unsere aktuellen shopware shop so aus:
[2016-06-16 13:16:30] plugin.INFO: sAdmin::sGetDispatchBasket ausgeführt [] {"uid":"35400d4"}
[2016-06-16 13:16:30] plugin.INFO: sAdmin::sGetDispatchBasket ausgeführt [] {"uid":"35400d4"}
[2016-06-16 13:16:30] plugin.INFO: sAdmin::sGetDispatchBasket ausgeführt [] {"uid":"35400d4"}
[2016-06-16 13:16:30] plugin.INFO: sAdmin::sGetDispatchBasket ausgeführt [] {"uid":"35400d4"}
[2016-06-16 13:16:30] plugin.INFO: sAdmin::sGetDispatchBasket ausgeführt [] {"uid":"35400d4"}
und wenn ich alle plugins deaktiviere, bzw. mit vanilla shopware probiere, kommt es immer noch 3 mal:
[2016-06-16 13:18:56] plugin.INFO: sAdmin::sGetDispatchBasket ausgeführt [] {"uid":"ecf70c8"}
[2016-06-16 13:18:56] plugin.INFO: sAdmin::sGetDispatchBasket ausgeführt [] {"uid":"ecf70c8"}
[2016-06-16 13:18:56] plugin.INFO: sAdmin::sGetDispatchBasket ausgeführt [] {"uid":"ecf70c8"}
habe mit trial-and-error herausgefunden das plugin SwagTrustedShopsExcellence führt sAdmin::sGetDispatchBasket 2 mal aus…
dazu kommt noch das “ins warenkorb addieren” auch sAdmin::sGetDispatchBasket mehrmals ausführt, obwohl es nicht mal versandkosten anzeigt…
das problem ist das unsere versandkosten berechnungen - was shopware vorschreibt als sql zu schreiben - sehr komplex sind, und wenn diese merhmals per request immer neu berechnet wird… suboptimal!
daher, wundere ich:
- wieso berechnet vanilla shopware versandkosten mehr als einmal pro request?
- was macht SwagTrustedShopsExcellence 2 mal mit warenkorb?
- was macht SwagTrustedShopsExcellence überhaupt mit warenkorb wenn noch keine bestellung?
- wieso berechnet “ins warenkorb addieren” versandkosten?
- sind die nächsten sql query results pro request wenigstens gecached?
ich versuche das punkt mit sql query result cache zu bestätigen, aber anscheinend kann man mit mysql nur per session profilen, und noch keine ahnung wo shopware mysql session anfängt oder aufhört. tips?
ps. wir haben in unsere plugins - die warenkorb brauchen - von $controller->getBasket() ins Shopware()->Modules()->Basket()->sGetBasket() getauscht. damit bekommt man anscheinend warenkorb inhalt ohne versandkosten berechnung.