|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Futur Membre du Club
![]() FX Inscription : juillet 2010 Messages : 75 ![]() |
bonjour,
j'ai mis en place un arbre de mot-clé dans mon site. Je souhaite optimiser un arbre de mot-clé classé par ordre alphabétique (A-B-C-D...) et un autre arbre classé par l'administrateur. La version alphabétique est longue à l'affichage, plus il y a de mot-clé, plus c'est long, ici une centaines de mots. type calls time (ms) time (%) Component "motsclefs/arbomc" 1 73.99 5 Partial "motsclefs/_arbomc" 1 384.58 30 Quant à la version Admin, elle demande trop de ressources pour l'affichage. Voici mon fichier component pour le module concerné : Code :
Code :
|
||||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() |
Très souvent les problèmes de perf viennent du Poste ou les développements sont effectués.
Ensuite tu fais trop de métier dans la partie template (presque tout ce que tu fais dans le template devrais être dans le componant). Ensuite tu as surement des indexes à mettre en place sur tes tables. Enfin si tu es amené à traiter une très grosse quantité de données, il n'est pas forcément judicieux d'utiliser des objets. Exécute le traitement sur un tableau se sera plus rapide. |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() FX Inscription : juillet 2010 Messages : 75 ![]() |
Merci Kenny,
d'après ce que tu m'indiques, il faudrait donc que je sorte les données de la requête SQL sous forme de tableau. Est-il possible de créer le tableau dans le component et d’exécuter l'affichage dans le template ? |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() |
oui doctrine te propel permettent entre autre de te retourné le résultat sous forme de tableau ou d'objet.
par exemple en faisant comme ceci : Code php :
$this->motsclefs = $this->motsclefs->toArray(); ensuite dans la vue tu fait ça : La tu retrouve ton tableau. |
|
|
00
|
|
|
#5 | ||||
|
Futur Membre du Club
![]() FX Inscription : juillet 2010 Messages : 75 ![]() |
bonjour,
j'ai mis en place la requête suivante : Code :
Code :
<? $motsclefs = $motsclefs->getRawValue();?> Code :
[3] => Array ( [id] => 495 [motclef_id] => [Translation] => Array ( [fr] => Array ( [id] => 495 [intitule] => Amusement [lang] => fr [slug] => amusement ) ) ) [4] => Array ( [id] => 488 [motclef_id] => [Translation] => Array ( [fr] => Array ( [id] => 488 [intitule] => Arbre [lang] => fr [slug] => arbre ) ) ) Code :
Merci. |
||||
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() |
tu fais un var_dump() ou un print_r() de $motsclef tu auras ta réponse
|
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() FX Inscription : juillet 2010 Messages : 75 ![]() |
voila ce que me sort un print_r de motsclef :
Code :
Array ( [id] => 589 [motclef_id] => [Translation] => Array ( [fr] => Array ( [id] => 589 [intitule] => 2009 [lang] => fr [slug] => 2009 ) ) ) il m'indique une erreur : Code :
Notice: Undefined index: intitule in /home/ |
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : octobre 2011 Messages : 4 ![]() |
Bonsoir,
Vu le retour de print_r(), je serais tenté d'écrire ça : Code :
echo $motsclef['Translation']['fr']['intitule']; |
|
|
00
|
|
|
#9 |
|
Membre chevronné
![]() |
il est 3 niveau en dessous.
$motsclef['Translation']['fr']['intitule']; |
|
|
00
|
|
|
#10 | ||
|
Futur Membre du Club
![]() FX Inscription : juillet 2010 Messages : 75 ![]() |
Très bien merci,
cela donne une optimisation : Citation:
Citation:
Le temps d'éxécution du composant a un peu augmenté, mais l'affichage a été divisé par 30. merci. |
||
|
|
00
|
|
|
#11 |
|
Membre chevronné
![]() |
Vois pour remplacer le par Tu devrais encore amélioré les perf.
Je m'explique que tu fais une execute() Doctrine génère des objets et ensuite tu fais un toArray() pour avoir un tableau alors qu'avec le fetchAll() tu ne passe pas par l'étape objet tu as directement un tableau. |
|
|
00
|
|
|
#12 | ||
|
Futur Membre du Club
![]() FX Inscription : juillet 2010 Messages : 75 ![]() |
bonjour,
vous vouliez plutot dire : car ne fonctionne pas chez moi. Exemple : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com