[Frage] Fatal-Error "Allowed memory size" und Verständnisproblem

  • jochla jochla
    Jedi-Ritter
    0 x
    128 Beiträge
    0 Hilfreiche Beiträge
    25. 02. 2015, 22:55

    Hallo,

    zuerst möchte ich mich gleich für mein Cross-Posting (http://www.typo3forum.net/forum/typo3-extbase/76109-fatal-error-verstaendnisproblem.html und TYPO3 German Mailingliste) entschuldigen, aber ich trete auf der Stelle und komme nicht weiter.

    In einer eigenen Extbase-Extension (die schon ohne Probleme funktioniert hat) erhalte ich den Fehler "Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 69295 bytes) in ...". Mit var_dump im Repository habe ich nun herausgefunden, dass mein "return $query->execute();" x Mal ausgeführt wird. Das verstehe ich nicht!??? Oder interpretiere ich die Dump-Ausgabe falsch?

    In meinem List-Template habe ich diese Verarbeitungsstruktur:

    <f:if condition="{cruises}">
    <f:then>
    <f:for each="{cruises}" as="cruise" iteration="cruiseIterator">
    <f:cycle values="{0: 'even', 1: 'odd'}" as="class">
    <tr class="tr-{class} tr-{cruiseIterator.index}{f:if(condition:cruiseIterator.isLast, then: ' tr-last')}" >
    ...
    </f:cycle>
    </f:for>
    </f:then>
    <f:else>
    ...
    </f:else>
    </f:if>

    In meiner listAction() lese ich mit einer eigenen Find-Funktion:

    $cruises = $this->cruiseRepository->findBySelectedCriteria($this->settings);
    $this->view->assign('cruises', $cruises);

    Im Model sind alle Relationen mit @lazy deklariert.

    Im Repository habe ich in der Funktion "findBySelectedCriteria()" einen Extbase Variable Dump von "$query->execute()" eingesetzt, den ich nach mehr als 70 Auflistungen im Browser abgebrochen habe:

    TYPO3\CMS\Extbase\Persistence\Generic\QueryResultprototypeobject (21 items)
    0 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=189, pid=102)
    1 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=185, pid=102)
    2 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=188, pid=102)
    3 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=184, pid=102)
    4 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=20, pid=102)
    5 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=108, pid=102)
    6 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=110, pid=102)
    7 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=14, pid=102)
    8 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=111, pid=102)
    9 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=112, pid=102)
    10 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=107, pid=102)
    11 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=113, pid=102)
    12 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=106, pid=102)
    13 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=105, pid=102)
    14 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=104, pid=102)
    15 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=103, pid=102)
    16 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=193, pid=102)
    17 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=102, pid=102)
    18 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=114, pid=102)
    19 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=25, pid=102)
    20 => XXX\Extension\Domain\Model\Cruiseprototypepersistent entity (uid=115, pid=102)

    Das Ergebnis von 21 gefundenen Datensätzen entspricht der Datenmenge für die angegebenen Suchkriterien.
    Auf einer Seite, auf der aufgrund der Suchkriterien korrekterweise keine Datensätze gefunden / ausgegeben werden, wird Extbase var_dump 2.047 ! mal ausgegeben: TYPO3\CMS\Extbase\Persistence\Generic\QueryResultprototypeobject (empty) !???

    Irgendwelche Veränderungen die vermeintlich mit diesem Problem zusammenhängen können, sind mir nicht bewusst. Ich verstehe das nicht und steh komplett auf dem Schlauch. Wer kann mir bitte weiterhelfen?

    Im voraus schon mal eine dickes DANKE an alle, die sich mit meinem Problem auseinandersetzen.

    Johannes.


  • 1
  • jochla jochla
    Jedi-Ritter
    0 x
    128 Beiträge
    0 Hilfreiche Beiträge
    02. 03. 2015, 20:12

    Das Problem konnte ich mit Unterstützung lösen. Ursache war gar nicht die Extension selbst, sondern Typoscript Code, mit dem ich nur dann die Überschrift des Plugin-Inhaltselements ausgeben wollte, wenn auch Datensätze gefunden wurden:

    1. tt_content.list.20.extension_plugin.stdWrap.preCObject = COA
    2. tt_content.list.20.extension_plugin.stdWrap.preCObject {
    3. 10 = TEXT
    4. 10 {
    5. field = header
    6. wrap = <h2>|</h2>
    7. if.isTrue.cObject =< tt_content.list.20.extesnion_plugin <-- Ursache
    8. }
    9. }

    Das hat anscheinend dazu geführt, dass das Plugin rekursiv aufgerufen wurde.

  • 1