[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
OOCategory::getParent.. sinnlose query @ root - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

OOCategory::getParent.. sinnlose query @ root

25. Apr 2011, 04:16

Moin,

mir ist heute aufgefallen, daß getParent() nicht prüft, ob es dabei ist, die root category 0 aufzurufen.. , denn dies führt letztlich via OOArticle::getArticleById zur sinnfreien sql query

Code: Alles auswählen

SELECT * FROM rex_article WHERE rex_article.id='0' AND clang='0'
.. und das jedesmal bei einem Seitenaufruf. Wenn jetzt irgendein code sich rekursiv durch die Kategorien hangelt, gibts für jedesmal "in root aufschlagen" diese query. Wenn dann pro Seite (hier in einem Rexsale Projekt) mal eben 22 dieser queries mit aufn Zettel kommen, ist das schon ne Spaßbremse.

Ich hab hier jetzt erstmal die Funktion wie folgt geändert:

Code: Alles auswählen

 // Original
/*public*/ function getParent($clang = false)
{
  if ($clang === false)
    $clang = $this->_clang;
  return OOCategory :: getCategoryById($this->_re_id, $clang);
}

Code: Alles auswählen

 // Patch
/*public*/ function getParent($clang = false)
{
  if ($clang === false)
    $clang = $this->_clang;
  if($this->_re_id>0)
  {
    return OOCategory :: getCategoryById($this->_re_id, $clang);
  }
  else
  {
    return null;
  }
}
Meinungen?

lg,
Jan
vg, Jan

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: OOCategory::getParent.. sinnlose query @ root

25. Apr 2011, 11:03

jeandeluxe hat geschrieben:Meinungen?
Man könnte hier argumentieren, dass der Programmierer selbst dafür verantwortlich ist und überprüfen muss, ob der Einsatz von getParent() notwendig ist.

Mir fällt ehrlich gesagt auch keine Situation ein, in der ein rekursiver Aufruf von getParent() nötig ist. Entweder man hangelt sich von oben nach unten durch oder man arbeitet mit dem Pfad (getParentTree()) des jeweiligen Artikels bzw. der Kategorie.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: OOCategory::getParent.. sinnlose query @ root

25. Apr 2011, 12:32

Xong hat geschrieben:Man könnte hier argumentieren, dass der Programmierer selbst dafür verantwortlich ist und überprüfen muss, ob der Einsatz von getParent() notwendig ist.
Seh ich persönlich anders.. u.a. auch wegen dem unnötigen Aufwand das im eigenen Code zu kontrollieren. Eine sinnfreie live query, die lediglich durch Verwendung einer core Funktion auftritt is imho eher ein bug.
Xong hat geschrieben:Mir fällt ehrlich gesagt auch keine Situation ein, in der ein rekursiver Aufruf von getParent() nötig ist.
Ob es sinnvoll erscheinen mag oder nicht finde ich an der Stelle müßig..

lg,
Jan
vg, Jan

Benutzeravatar
xrstf
Beiträge: 65
Registriert: 3. Sep 2009, 15:49

Re: OOCategory::getParent.. sinnlose query @ root

25. Apr 2011, 17:23

Ich find die Lösung von Jan praktikabel. Das CMS hat an der Stelle bereits genug Wissen über die Struktur und kann problemlos die Abfrage einspraren. REDAXO ist ja kein nacktes Framework à la Doctrine, das nichts über die Semantik der Daten weiß.

Von daher: +1 :wink:
User was banned for this post. [ externes Bild ]

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

Re: OOCategory::getParent.. sinnlose query @ root

25. Apr 2011, 18:43

Hi zusammen,

Ich finde auch, dass es kein dringender fix ist, allerdings trivial und sinnvoll.

Daher werden wir das in der R5 beheben,...

Lg, Markus

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

Re: OOCategory::getParent.. sinnlose query @ root

25. Apr 2011, 20:19

Hi nochmal,

habs mir grad nochmal angesehen... in R5 tritt das Problem gar nicht auf.

Gruß,
Markus

Benutzeravatar
Ruediger.Nitzsche
Beiträge: 2117
Registriert: 13. Dez 2005, 09:29
Wohnort: Coburg
Kontaktdaten: Website

Re: OOCategory::getParent.. sinnlose query @ root

26. Apr 2011, 10:53

ein Fix für R4 wäre aber trotzdem sinnvoll, da ja zum einen R5 noch nicht veröffentlicht ist und die 4 garantiert noch eine ganze Weile genutzt werden wird als Produktivsystem.

Rüdiger
gn2 netwerk | gn2 hosting | REDAXO Referenzen | Github
Supportanfragen per PN werden gepflegt ignoriert

Hirbod
Beiträge: 435
Registriert: 15. Jan 2008, 14:46

Re: OOCategory::getParent.. sinnlose query @ root

29. Apr 2011, 10:44

+1 @ Rüdiger.

Ich finde es auch schade, das hier ständig nur Bugfixes für R5 nachgeschoben werden. Im Forum sind mittlerweile genug Bugs für R4.3.* aufgetaucht, nen 4.3.3 mit paar Bugfixes nachzuschieben finde ich sinnvoll.

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

Re: OOCategory::getParent.. sinnlose query @ root

29. Apr 2011, 11:51

Hi,

das ist kein Bug sondern ein min. Performance Verbesserung in einem Edge-Case.

Gruß,
Markus

Benutzeravatar
jdlx
Beiträge: 2615
Registriert: 29. Sep 2005, 10:50
Wohnort: Hamburg
Kontaktdaten: Website

Re: OOCategory::getParent.. sinnlose query @ root

29. Apr 2011, 13:27

Markus.Staab hat geschrieben:das ist kein Bug sondern ein min. Performance Verbesserung in einem Edge-Case.
Wie auch immer man das persönlich bewerten will, was spricht dagegen es zu fixen?
Zumal der fix trivial und ohne Nebenwirkungen ist..

rex5 in allen Ehren, aber um das Mantra der anderen nochmal zu wiederholen: rex4 ist nunmal die aktuelle Version.. es wird nicht jeder gleich seine site auf r5 updaten wollen oder können wenn es dann mal als stable zur Verfügung steht, genauso wie aktuell viele Sites noch mir 4.x laufen..
d.h. es spricht alles dafür aufgestaute fixes für r4 auch tatsächlich mal einzubauen.

lg,
Jan
vg, Jan

Zurück zu „Sonstiges“