Function resetCatArticleCount() unvollständig?

Moin Leute,
ich bastel gerade eine umfangreiche Shoperweiterung und dazu benötige ich an einer Stelle die Möglichkeit, den Artikel-Counter aller Kategorien neu einzulesen. Dazu scheint es in der /core/oxutilscount.php die Funktion resetCatArticleCount() zu geben. Wenn ich die aber aufrufe z.b. per

oxUtilsCount::getInstance()->resetCatArticleCount();

klappt dies nicht, und es werden trotzdem noch die alten Zähler ausgelesen (aus /tmp/oxpec_aLocalCatCache.txt)!

Dieses z.b. klappt jedoch (brauche ich ebenso):

oxUtilsCount::getInstance()->resetManufacturerArticleCount();

Wenn man den Code vergleicht, fällt schnell auf, dass folgende Zeile fehlt in der Funktion resetCatArticleCount():

oxUtils::getInstance()->toFileCache( 'aLocalCatCache', '' );

d.h. der “Global-Cache” wird zwar geleert, aber NICHT der File-Cache, was man hiermit ergänzt…

Der Grund, warum ich hier so weit aushole, ist, dass ich halt nicht weiss, ob es ein Bug ist oder nicht, denn im normalen Shopbetrieb (ohne meine Extension) kann es gut sein, dass der Code nirgendwo zum Tragen kommt? Andererseits passt diese “Code-Lücke” einfach nicht ins Schema, und es sieht einfach so aus, als wäre die Zeile schlicht vergessen worden!?

Ich kann mir natürlich einfach selbst helfen, aber schöner wäre es, wenn die Zeile auch im Original-Code stehen würde, damit ich mir an einer Stelle weniger Gedanken bei zuküftigen Erweiterungen/Updates machen muss… :wink:

Gibt es also noch Diskussionsbedarf, oder wo trage ich wie am effektivsten einen eigenen Bug-report/fix ein (oder gleich per svn)?

Beste Grüße!

Hallo,

Gibt es also noch Diskussionsbedarf, oder wo trage ich wie am effektivsten einen eigenen Bug-report/fix ein (oder gleich per svn)?

Ich habe momentan keine Möglichkeit, das zu prüfen, deshalb fällt Option A aus :slight_smile:
Ins SVN kann noch nicht geschrieben werden.
Würdest Du es bitte kurz in Englisch in den Bugtracker einstellen? https://bugs.oxid-esales.com

Danke und Gruß

Okay, ich habs mal dort eingetragen als #2707.

Autsch! :eek:

da habe ich mir aber echt selbst ein Bein gestellt, echt, wie doof kann man sein? Man sollte es natürlich tunlichst unterlassen, unnötig FileCaches zu resetten (und geändert neu zu schreiben), da dies ja Auswirkungen für ALLE Besucher haben kann! :o

Und damit Ihr mir überhaupt folgen könnt:
Es wird ein Motorrad-Zubehör-Shop, und da habe ich eine eigene Mini-DB integriert, die ca. 10.000 Bikes verwaltet und diese dann mit den einzelnen Artikeln verknüpfen kann, quasi genau wie mit Kategorien. Und dafür gibt es dann eine extra Suchbox im Shop, die nach Marke, Modell, Hubraum filtert und eine Liste ausgibt. Wählt man dort einen Eintrag beginnt der Voodoo… :smiley:
Nun wird nämlich dieses Bike gesichert (Session) und als Obersuchkriterium des gesamten(!) Shops verwendet, sodass nur noch passende Teile dieses Bikes angezeigt werden. Die Bike-Bindung kann man dann durch einen markanten Button wieder lösen.
Das klappt auch alles soweit prima, nur muss man dafür halt mind. diese Artikel- und Manufacturer-Caches leeren, damit die beim nächsten Aufruf (ich nehme gleich einen redirect) dann korrekt neu eingelesen werden.

Meine jetzige Lösung:
In der /core/oxutilscount.php die Funktionen _getCatCache + _setCatCache sowie _getManufacturerCache + _setManufacturerCache (weitere nach Bedarf) anpassen, damit dort eben NICHT der FileCache genutzt wird, wenn meine “Meta-Variable” gesetzt ist, sondern nur die GlobalParameter.
Und in diesem Falle ist es nun eher kontraproduktiv in resetCatArticleCount() den FileCache explizit zu löschen, sondern genau anders herum:
Nun sollte man dieses auch in resetManufacturerArticleCount() untersagen, damit die Files möglichst selten gelöscht und geschrieben werden müssen, am besten ja gar nicht.

Nun weiß man aber leider nicht, warum (wie oben geschildert) die Zeile in resetCatArticleCount() fehlt (Bug oder nicht Bug?), und welche Auswirkungen irgendwelche Änderungen in den erwähnten Funktionen für die restliche Shoptechnik haben könnten. Irgendein Signal seitens der Entwickler wäre da äußerst interessant! :wink:

Ich muss die reset-Funktionen allerdings auch nicht zwingend verwenden, sondern kann ja direkt

$this->getConfig()->setGlobalParameter( 'aLocalManufacturerCache', null );

aufrufen, insofern könnten alle Funktionen so bleiben wie sie sind. Denn ohne meinen Shop-Umbau dürfte das ganze Thema eher nie zum Tragen kommen.

Beste Grüße!