Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je suis en train de réaliser une appli MVC avec le ZendFramework, et je suis impressionné par les faibles performances obtenues, car les pages sont générée en...3 secondes!.... énorme!... Je sèche complètement sur l'origine de ces chronos, mais rien que le premier appel à Zend_date me prend entre 0.2 et 0.5 secondes dans mon crontroller d'action... encore une fois c'est énorme, surtout pour une classe si commune!...
Alors problème général à ZendFramework ou c'est moi qui programme comme une quiche?!...
Hors ligne
J'ai une page faisant appelle à une base de donnée, des formulaires, des tranductions, des Zend_Date et je suis très loin des 3 secondes.
[humour]
Il vaut mieux que tu cherches du coté de la quiche
[/humour]
Hors ligne
Juste comment expliquer que ce code, placé en tout début de mon controller d'action me donne un résultat de près de 0.37172985076904 secondes!!! C'est fou non?
$timeArray=array(); $timeArray['datestart']=microtime(true); $lundi=new Zend_date(); $timeArray['dateend']=microtime(true); echo 'Datetime:'.($timeArray['dateend']-$timeArray['datestart']);
Hors ligne
PS: J'utilise le zendloader, est-ce que ca pourrait provenir de ca?
PS2 pour les admins: je pense que ce sujet aurait du être créé dans la section général en fait
Dernière modification par Indyana (24-07-2008 10:43:24)
Hors ligne
ha et heu j'utilise les classes suivantes:
Zend_Loader
Zend_Config_Ini
Zend_Db
Zend_Db_Table
Zend_Auth
Zend_Date
Smarty
Hors ligne
Voici mon code
<?php require_once 'Zend/Loader.php'; Zend_Loader::registerAutoload(); $timeArray=array(); $timeArray['datestart']=microtime(true); $lundi=new Zend_Date(); $timeArray['dateend']=microtime(true); echo 'Datetime:'.($timeArray['dateend']-$timeArray['datestart']);
et le resultat
Datetime:0.013950824737549
Je suis toujours loin des 0.3
EDIT :
Encore mieux :
Datetime:0.00813889503479
Dernière modification par nORKy (24-07-2008 10:51:17)
Hors ligne
yep, ce code est placé au niveau du controller d'action comme je le disait, d'où mon interrogation... En fait je suspecte fortement que l'empilement des appels de classes dégrade les performances de façon exponentiel.
Hors ligne
Bonjour Indyana,
J'ai déplacé le message à ta demande.
Sinon j'ai testé le code de nORKY
Datetime:0.010655164718628
La première fois j'avais 0.2xxx, mais quand tu le lances la première fois il y a plein d'accès disque pour récupérer les codes des classes. Dès la 2e exécution, tous le code est en cache (je parle du cache du filesystem), ça va bcp plus vite. Sur un gros site en termes de trafic, il ne charge jamais les fichier code, tout le code est dans le cache du système.
A+, Philippe
Hors ligne
Hum... je viens de tester sur une de mes machines de prod :
Datetime:0.00047802925109863
C'est une machine de guerre avec APC activé. Par contre j'ai un site à relativement gros trafic dessus (un site de vidéo).
A+, Philippe
Hors ligne
Et oui Indyana, le travaille ne se fait pas que dans le code de ton appli web, mais aussi à tout le reste de ta machine si tu tiens absolument à tes performances exellentes.
Hors ligne
Utilisez APC....
Zend_Date est une classe qui fait beaucoup de calculs (avez vous regardé la source ?). Il est possible d'utiliser un Zend_Cache avec Zend_Date ( setOptions(...) ).
Hors ligne
vi, vi vi... Bon en fait il m'apparait maintenant clairement que ce sont les accès disque qui posaient problème. Je vient de faire un test sur un hébergement web classique et cela roule du tonnerre. Ca me rassure quand à mes compétences!... Je me suis fourvoyé car en réalisant le même application avec du php à "l'ancienne", dans une seule page, j'avais des temps de réponse excellents alors qu'avec le Zend, c'était la cata. Mais étant donné le nombre d'accès important à des fichiers avec le Zend, ça explique les temps d'accès.
Merci pour vos réponses!
Hors ligne
Surtout sur des plateformes de dev Windows, ou les temps d'accès peuvent facilement être multipliés par 10 en rapport à une plateforme UNIX de production :-D
Hors ligne
Je confirme concernant les accès entre UNIX et windows.
De plus, nous devons régulièrement relancer les apaches sous windows, alors que nous ne touchons jamais aux apache unix
Hors ligne