Personenbezogener Artikelfilter - Problem mit Article Count Cache

Hallo zusammen,

wir haben ein Modul programmiert, dass für bestimmte Benutzer bestimmte Artikel ausblendet. Funktioniert auch wunderbar was den Filter an sich angeht. Allerdings kommt es hierbei zu dem Problem, dass die im Cache abgelegten Artikelzahlen für eine Kategorie oder andere Artikelliste ggf. für den aktuellen Benutzer nicht mehr stimmen. Das wirkt sich wiederum negativ auf die Pagination im list view aus.

Wir haben es jetzt so gelöst, dass wenn das Modul aktiv ist, bei jedem Seitenaufruf die Anzahl der Artikel in den Listen zurückgesetzt wird (per resetCatArticleCount(), setManufacturerArticleCount(), resetPriceCatArticleCount() und resetVendorArticleCount()).
In meinen Augen ist das nicht gerade die feine englische Art und ich befürchte, dass das bei größeren Shops zu doofen Performance-Problemen führen könnte.
Hier also die Frage:
Hat jemand eine bessere Idee, das Problem zu lösen oder hat jemand schon mal was ähnliches versucht?

Viele Grüße

Gregor

P.S.: Falls jemand Interesse an dem grundsätzlichen Ansatz hat, würde ich den Ansatz hier auch posten.

gibts doch bereits?

http://www.marmalade.de/shop/OXID-eShop-Module/OXP2C-Product2Customer.html

Gregor, mal ganz ehrlich: Du bist derjenige, der Module unter kommerzieller Lizenz verkauft, was per se nicht verkehrt ist. Dabei sind Dir alle philosophischen Ansätze von GPLv3 oder Open Source völlig schnuppe, diese Ansichten hast Du bisher völlig ignoriert:

Erwartest Du ernsthaft Gehirnschmalz oder gar Konzeptionen for free von anderen hier im Forum? Als Ausgleich bietest Du an, einen Ansatz zu posten - das ist wohl kaum genug.

Ich will jetzt hier keine Grundsatzdiskussion vom Zaun brechen aber ein wenig Achtung, Verständnis und Empathie vor dem “anderen Lager” sollte sein, oder?

Gruß

[QUOTE=Marco Steinhaeuser;132500]Gregor, mal ganz ehrlich: Du bist derjenige, der Module unter kommerzieller Lizenz verkauft, was per se nicht verkehrt ist. Dabei sind Dir alle philosophischen Ansätze von GPLv3 oder Open Source völlig schnuppe, diese Ansichten hast Du bisher völlig ignoriert:

Erwartest Du ernsthaft Gehirnschmalz oder gar Konzeptionen for free von anderen hier im Forum? Als Ausgleich bietest Du an, einen Ansatz zu posten - das ist wohl kaum genug.

Ich will jetzt hier keine Grundsatzdiskussion vom Zaun brechen aber ein wenig Achtung, Verständnis und Empathie vor dem “anderen Lager” sollte sein, oder?
[/QUOTE]

Hallo Marco,

ignoriert ist das falsche Wort, würde ich sagen. Um ehrlich zu sein, habe ich mir in dem Moment keine Gedanken zu den FAQs gemacht - die FAQs waren also gar nicht erst in meinem Kopf. Debatten kann ich dazu also ohnehin gerade nicht führen.
Allerdings helfen mir (und ich vermute anderen ebenso) Diskussionen über solche Themen bei der Lösung von Problemen hin und wieder mal weiter. Das Thema könnte also in meinen Augen für andere auch interessant sein.

Den Code hätte ich hier auch gleich gepostet, was mir für den Moment aber zu zeitraubend vorkam (verschiedene Dateien, extra Tabellen, Beschreibungen). Ich habe ihn nicht nicht gepostet, weil er geheim ist oder ich ihn nicht teilen will. Tatsächlich wollte ich schauen, ob sich überhaupt jemand dafür interessiert.

Mir ging es vor allem um eine Diskussion, über die Article-Count-Cache-Problematik und ein besseres Verständnis davon. Ich verstehe nicht, wo da das Problem liegt - die Diskussion ist doch öffentlich und andere können davon genauso profitieren oder wo liegt mein Denkfehler?
Das mir jemand eine Konzeption for free liefert, habe ich nicht erwartet. Nur einen Hinweis wie “Im OXID Shop sind solche personenbezogenen Artikelfilter schwierig, da verschiedene Caches global gespeichert werden und nicht personenbezogen.”, was in meinen Augen offenbar so ist. Vielleicht hätte ich einfach selbst genauer recherchieren sollen?

Und wer ist “das andere Lager”? Du siehst so richtig verstanden habe ich Deinen Punkt “Achtung, Verständnis und Empathie” noch nicht. Wenn Du dazu noch 2, 3 Sätze sagen könntest, was genau Du meinst, fänd’ ich das toll.

Und ich würde behaupten, ohne genau meine Beiträge genau nachzuschauen, dass ich das Forum hier nicht nur dazu verwende, um mich zu bereichern. Ich versuche schon zurück zu geben. Für mein Verständnis ist Open Soruce Software eben auch deshalb Open Soruce, um darüber zu diskutieren, sich gegenseitig zu helfen, Fehler zu besprechen usw.

Grüße …

[QUOTE=Hebsacker;132499]gibts doch bereits?

http://www.marmalade.de/shop/OXID-eShop-Module/OXP2C-Product2Customer.html[/QUOTE]

Ein schönes Modul. Bei dem Modul wird das Problem aber offenbar umgangen, indem die Benutzer Kategorien zugeordnet werden. Wir wollten allerdings, dass lediglich bestimmte Artikel nicht sichtbar sind, die Kategorien aber erhalten bleiben. Also: für unterschiedliche Benutzer ist die Anzahl der Artikel in einer Kategorie unterschiedlich.

Danke trotzdem für den Hinweis :slight_smile:

Schöne Grüße

Gregor

ja, das hab ich schon gelesen in Deinem Post - aber das geht mit dem Modul auch

Einzelne Artikel können über versteckte Kategorien ausgeblendet werden.

Hallo Hebsacker,

[QUOTE=Hebsacker;132518]ja, das hab ich schon gelesen in Deinem Post - aber das geht mit dem Modul auch[/QUOTE]
ok, danke für den Hinweis. Hatte den letzten Satz in der Artikelbeschreibung nicht wahrgenommen. An dieser Stelle werden die Programmierer von Marmalade sicher auch auf das Cache-Problem gestoßen sein, könnte ich mir vorstellen.

… na ja … wie auch immer - danke noch mal!

Schönen Abend

Gregor

Moin Ihrs,

und wie unterscheidet ihr die unterschiedlichen Benutzer?
Das müsste normalerweise über die Benutzergruppe gemacht werden…
Und da kann ich mir ein bisschen Eigenwerbung nicht verkneifen… KLICK<-ANKLICKEN!
Warum das Rad doppelt erfinden??

Beste Grüsse

Thomas

[QUOTE=Tom Long;132563]
Warum das Rad doppelt erfinden??
[/QUOTE]

Machst Du das nicht auch hin und wieder ? :wink:

Moin rubbercut,

nur wenn ich vorher nach intensiver Suche kein entsprechendes Modul gefunden habe! :smiley:
Und auf deiner Demoseite musste man schon explizit wissen, wonach man sucht um überhaupt zu erkennen, das da etwas ist.

Sonst hätten wir uns nämlich die Entwicklungskosten hier gespart und schlicht und einfach bei dir angefragt.

Beste Grüsse

Thomas

[QUOTE=Tom Long;132563]Moin Ihrs,

und wie unterscheidet ihr die unterschiedlichen Benutzer?
Das müsste normalerweise über die Benutzergruppe gemacht werden…
[/QUOTE]

Das Modul funktioniert mit Daten die in einer anderen Tabelle stehen (müssen). In dieser anderen Tabelle stehen Einträge mit Benutzer ID und Productnummer, die für den Benutzer nicht angezeigt werden dürfen.

Es wird außerdem davon ausgegangen, das Benutzer eingeloggt sein müssen.

Wegen der vorgegebenen extra Tabelle war ein bereits existierendes Modul so nicht geeignet.

Trotz der Benutzergruppen müsstet ihr doch dieses Cache Problem trotzdem haben, oder nicht?

Schöne Grüße

Gregor

[QUOTE=Tom Long;132571]Moin rubbercut,

nur wenn ich vorher nach intensiver Suche kein entsprechendes Modul gefunden habe! :smiley:
[/QUOTE]

Hallo,
na, dann war die Suche nicht intensiv genug, denn selbst sowas wie hier existiert schon seit mehr als 2 Jahren.

http://forum.oxid-esales.com/showthread.php?t=9210&page=2#post54913

Damit sowas nicht mehr passiert, geht diese Woche was neues an den Start. Da gibt`s das Modul etwas abgespeckt, aber immer noch sehr umfangreich. :wink:

Grüße

Cutty

Moin Cutty,

ok, ich gebe zu, dass mir beim Begriff “Multidesignshop” sofort ein kundenspezifischer Artikelfilter einfällt… :smiley:

Beste Grüsse

Thomas

Back to Topic: Wenn _getCategoryCountSelect modifiziert ist, kann Caching für die aktuelle Kategorie abgeschaltet werden in loadCategoryArticles, Pagination funktioniert wieder. Wenn auch die Anzahl der Artikel funktionieren soll, müsste oxutilscount::setCatArticleCount so umgeschrieben werden dass es oxarticlelist::_getCategoryCountSelect verwendet, ausserdem müsste der Cache userbezogen abgelegt werden.