Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Symfony2] Toevoegen collection/entity maakt Form erg traag

Pagina: 1
Acties:

  • StephanVierkant
  • Registratie: Mei 2003
  • Laatst online: 05-11 23:08
Ik probeer momenteel een formulier te maken met Symfony2 Forms. Alles werkt prima, maar de pagina is enorm traag zodra ik meerdere collections/entities toevoeg. Het weliswaar een flink formulier geworden, maar het verschil tussen een simpel formulier (rond de 1000ms) en het formulier met collections/entities is wel erg groot.

Zie hier de profiler:
Afbeeldingslocatie: http://tweakers.net/ext/f/5u59qyAywWjlMmi4LATVyFIc/medium.png

Het probleem lijkt dus niet in Twig/Doctrine te zitten, maar in de controller. Ik heb al geprobeerd wat code te strippen, en daaruit blijkt dat het toevoegen van een collection/entity zorgt voor een traag formulier.

Het gaat om een vrij standaard Symfony2 app, waarbij ik vooral de tutorials heb gevolgd. Behalve APC heb ik verder (nog) geen optimalisaties gedaan.

Hoe kan ik het genereren van het formulier verbeteren? De uiteindelijke productieserver zal een stuk beter zijn dan de huidige developmentserver, maar ik zoek nu vooral naar optimalisaties in code.

  • TheDevilOnLine
  • Registratie: December 2012
  • Laatst online: 18-11 16:17
Symfony2 forms zijn erg traag met het genereren van dropdown van entities. Zie ook http://12wiki.blogspot.nl...-rendering-of-entity.html

Extra tip: als je wilt weten waar in je controller iets traag is, gebruik dan de stopwatch - http://symfony.com/doc/current/components/stopwatch.html (alleen beschikbaar in debug te verkrijgen in je controller via $this->get('stopwatch') )

  • StephanVierkant
  • Registratie: Mei 2003
  • Laatst online: 05-11 23:08
Dank, nuttige info! Overigens vind ik het verschil tussen mijn voorbeeld en het genoemde blog nogal groot. Het laden van mijn pagina duurt nu zo'n 8-10 seconden. Volgens mij gaat er dus nog wel iets anders mis.

Ik zie niet helemaal het voordeel van de stopwatch, aangezien er al een profiler in zit. Ik zie 'getEntity' in het voorbeeld staan, is dat via de stopwatch toegevoegd?

  • TheDevilOnLine
  • Registratie: December 2012
  • Laatst online: 18-11 16:17
Het een en ander is al verbeterd, maar nog niet optimaal (zeker niet met grotere aantallen entities, de testcases in de profiler zijn met 1000+ entities)
StephanVierkant schreef op zondag 19 januari 2014 @ 18:48:
Ik zie 'getEntity' in het voorbeeld staan, is dat via de stopwatch toegevoegd?
Precies, zo kan je dus per functie (of codeblokje) in je profiler zien hoe lang dat er over doet en welk gedeelte er dus precies traag is!

  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 10-10 08:02
Vergeet niet dat het laden van volledig ge-hydrateerde entity in doctrine2 best zwaar is. Zeker als deze ook nog eens relaties met andere entities heeft. Soms is de oplossing om voor een dropdown niet de volledige entity te laden, maar via DQL zelf het lijstje op te bouwen om de dropdown te vullen bijv.

Driving a cadillac in a fool's parade.