[TYPO3-german] [Extbase, Fluid] Iteration über erweiterte Fe_Users holt zu viele Daten?

Christian Mohr christian.mohr at cjt.de
Wed Oct 22 19:09:55 CEST 2014


Hallo zusammen,

vorab, ich bin neu in der Typo3-Entwicklung. Könnte also sein, dass ich etwas durcheinander werfe.

Ich habe in einer eigenen Extension die fe_user und die fe_groups erweitert. Nun versuche ich alle User über das Repository zu holen und über diese in einem simplen Fluid-Template drüber zu iterieren:

[...]
<f:for each="{users}" as="user">
    <tr>
        <td> test</td>
    </tr>
</f:for>
[...]

Hierbei kam es bei mir zu Speicherüberschreitungen (mehr als 100MB belegt). Es handelt sich um ca 1800 User und es sind ca 60 weitere Attribute bei fe_user hinzugekommen (lediglich Strings, Booleans und Referenzen (lazy)). Auf Datenbankseite sind das lediglich ca 700kb.

Ich habe nun versucht das ganze über xhprof etwas zu untersuchen und mir ist dabei aufgefallen, dass der ForViewHelper zunächst für jeden FE_User "exec_SELECTgetRows" aufruft um den FE_user aus der Datenbank zu holen, was soweit auch ok ist. Zusätzlich werden aber auch pro fe_user alle ihm zugeordneten usergroups über ein separates query geholt , obwohl sie nicht benutzt werden. Das heißt pro fe_user werden nochmals 1-x Queries ausgeführt und wohl auch 1-x Model-Objekte angelegt, da sie wohl nicht wiederverwendet werden.

Daher meine Fragen:
Warum werden die Usergroups geholt? Liegt das daran, dass das Attribut usergroup beim feuser nicht als lazy markiert ist? Kann man das irgendwie umgehen?
Und wenn nicht, ist es möglich die Usergroup irgendwie wiederzuverwenden, sodass nicht weitere Instanzen davon angelegt werden?

Vielen Dank für jede Hilfe.

Mit freundlichen Grüßen

Christian Mohr



More information about the TYPO3-german mailing list