vaut il mieux : bcp de echo "" ou bcp de balises <?php> ? [PHP/HTML] - PHP - Programmation
Marsh Posté le 19-05-2003 à 14:11:42
il me semble avoir lu (ici même d'ailleurs) que c'était plus rapide d'éviter les ouvertures et fermetures de balises et donc de favoriser les echos de code html
AMHA, ca se joue quand même a peu de choses dans une page web classique
Marsh Posté le 19-05-2003 à 14:16:45
Les sources sont vagues mais ça fait toujours un avis sur la question, merci simogeo !
Si quun se sent de tester 2 styles de pages (une avec bcp de html et l'autre moins) et les 2 methodes pour chaque page (ouverture et fermeture a chq bout de script php et tout le html en echo). Bien sur il faudra donner le temps de chargement...
Marsh Posté le 19-05-2003 à 14:17:30
Je n'ai pas une grande expérience, mais personnellement, je préfère utiliser des echos...
A part les balises d'en-tete, toutes les autres balises sont inserées dans des echos.
En fait, c'est une question de clarté de code. Plus on utilise de php, moins il faut de balises <? ?>.
Le code s'en trouve aéré et lisible, si quelqu'un consulte la source...
A ce moment la, le php prédomine par rapport au html qui effectue juste le lien entre l'utilisateur et le serveur (et les opérations qu'il effectue). C'est de l'affichage. Or, on m'a toujours dit qu'il valait mieux bien séparer les parties concernant l'interface, du reste des traitements...
Marsh Posté le 19-05-2003 à 14:26:51
Je l'ai pas exprimé dans mon "vaut il mieux" mais je parlais plus de vitesse que de lisibilité. Et j'attend du vrai test et pas des preferences comme reponse.
excusez moi de pas avoir bien defini ma question.
Marsh Posté le 19-05-2003 à 14:32:09
pour ce qui est de la vitesse pure, ça semblerait logique que les echo soient moins rapides, ça file plus de boulot au parseur...
maintenant vu les temps sur lesquels on grapille mieux vaut privilégier la lisibilité du code...
Marsh Posté le 19-05-2003 à 14:32:30
masure a écrit : Je l'ai pas exprimé dans mon "vaut il mieux" mais je parlais plus de vitesse que de lisibilité. Et j'attend du vrai test et pas des preferences comme reponse. |
Je pense personnellement que les echos prennent plus de temps, étant donné qu'ils doivent être évalués par le parser alors que le HTML est directement lu !
EDIT :
Marsh Posté le 19-05-2003 à 14:40:51
@nero27 et shardar :
vous evitez une variable a l'interrogation que j'ai formulé . Je ne ferais pas les tests que j'ai proposés mais il est possible, quand le script php et tres emmelé avec le html, que les multiples ouvertures et fermeture de balises php aillent moins vite qu'une seule balises avec des echos.
Faudrait que je trouve le courage de faire un test avec 2-3 courbes en fonction des types de melange html/php. Mais pas pour le moment
Marsh Posté le 19-05-2003 à 15:06:01
non je pense pas..
faire appel à une fonction (ici le echo() ) est forcément plus lourd (même si c'est minime) que de ne pas parser une chaine et de la balancer
les processus sont quasi les mêmes mais on économise un appel de fonction...
en plus que ce soit emmelé ou pas change rien puisque l'echo remplace juste <? ?>
AMHA of course
tout ça c'est de la prise de tête sans grand intérêt, ça doit pas jouer sur les perfs d'un script
Marsh Posté le 19-05-2003 à 15:13:31
Oui mais moi j'aime pas déclarer de l'hypotéhtique...
Et c'est toujours bon a savoir meme si c'est un gain ou une perte de quelques pourcents...
Marsh Posté le 19-05-2003 à 15:20:02
ben dans ce cas, tu fais ton html avec un gestionnaire de template (smarty) que tu couples avec un système de caching (celui de zend pour faire "in" ).
Et comme ca, tu te casses plus le cul.
Marsh Posté le 19-05-2003 à 15:25:36
gizmo a écrit : ben dans ce cas, tu fais ton html avec un gestionnaire de template (smarty) que tu couples avec un système de caching (celui de zend pour faire "in" ). |
chinois pour moi . Je me suis pas encore penché sur le CSS pour tout te dire (d'ailleurs je sais meme pas si ça a qqchose à voir avec ce dont tu me parle , shame on me)
edit : oui oui je crois que je suis bien à coté car j'ai associé template avec style sheet alors que ca doit rien avoir a voir...
Marsh Posté le 19-05-2003 à 15:31:32
masure a écrit : |
rien mais spa grave .. on est la pour apprendre
Marsh Posté le 19-05-2003 à 15:39:25
Moi je dis que pour la lisibilité, les echo c'est pas top. Dans la pluspart des éditeurs avec coloration syntaxique, on perd la coloration du HTML s'il est dans un echo "code HTML". Et après on se retrouve à ouvrir des balises à l'extérieur des <? ?> et les fermer à l'intérieur, c'est vite le bordel.
Je serai donc partisant d'en mettre le plus possible en HTML pur, hors des <? ?>.
Marsh Posté le 19-05-2003 à 15:44:52
Sixtiz a écrit : Moi je dis que pour la lisibilité, les echo c'est pas top. Dans la pluspart des éditeurs avec coloration syntaxique, on perd la coloration du HTML s'il est dans un echo "code HTML". Et après on se retrouve à ouvrir des balises à l'extérieur des <? ?> et les fermer à l'intérieur, c'est vite le bordel. |
j'ai rectifié pour dire qu'on recherchait la vitesse... vous abusez, faut pas avoir bac +0 pour comprendre que le html est plus lisible sans echo. Donc deja pas besoin de le dire, et encore moins de le repeter. Personne n'est flemmard ici si oui économisez votre énergie.
Marsh Posté le 19-05-2003 à 15:55:15
masure a écrit : |
j'approuve complétement
Marsh Posté le 19-05-2003 à 15:57:50
pour l'asp je ferme mes balises <% %> pour l'html dès que le texte en question dépasse 3-4 éléments.
car en asp ca devient franchement illisible avec les concaténations
Marsh Posté le 19-05-2003 à 16:04:09
masure a écrit : |
Certes, j'avais compris, mais pour ça faudrait faire un vrai test avec des pages codées selon chacune des deux méthodes et comparer les résultats... Mais comme personne ne l'a encore fait, en attendant on meuble
Marsh Posté le 19-05-2003 à 16:04:29
C'est tellement bon de soulever des questions techniques intéressantes mais d'un impact assez faible sur les résultats. Si personne le fait ou que personne n'a deja la reponse, ben a la longue je ferais un ptit test. Mais j'ai jamais utilisé les timeticks ou ché plus quoi pour mesurer l'ecart de temps entre le debut d'un script et sa fin.
Marsh Posté le 19-05-2003 à 16:16:31
http://www.phpteam.net/affiche.php?quoi=pear_bench1
Marsh Posté le 19-05-2003 à 16:25:36
Je comptais me documenter et faire ca a la main lors du jour J, mais tu me files un lien mafoi bien sympa avec une classe simple mais cependant utile. Je te remercie simogeo... mais au fait, tu ferais pas ça pour me pousser au bench ?! vilain !
Marsh Posté le 19-05-2003 à 16:28:31
masure a écrit : |
moaaa? nan
(faut bien que kk'un le fasse )
Marsh Posté le 19-05-2003 à 17:32:14
Euh, si quelqu'un peut m'expliquer l'interet de mettre 20 echo a la suite, quand on peut fermer la balise php, et la réouvrir 20 lignes + bas. Les personnes qui abusent du echo ou du print (c'est selon...) me font penser a un developpeur qui avait pour IDE préféré MS WORD97.
Marsh Posté le 20-05-2003 à 11:40:27
A moins de n'utiliser un serveur asthmatique je pense qu'il n'y a pas vraiment de différence. J'ai fais quelques mesures sur une page en HTML 4.01 sans feuille de style, où chaque attribut COLOR, WIDTH, SIZE et compagnie est indiqué de cette manière :
<TR BGCOLOR="<?php echo $theme['thm_cellule_couleur_no2']?>">
Puis j'ai testé en balancant des echos entiers de plusieurs lignes, passant ainsi de 2 ou 3 dizaines d'ouvertures/fermetures de balises à 3 ou 4. Bah impossible de voir la moindre différence en mesurant le temps de génération avec 3 décimales après la virgule.
Bon, faut dire aussi que j'utilise du PHP compilé, il y a des chances que ca gomme les différences susceptibles d'exister. Mais à mon avis ne compte pas sur ca pour gagner ne serait-ce qu'un centième de seconde par page. Choisi la solution qui apporte le maximum de lisibilité à tes yeux
Marsh Posté le 20-05-2003 à 11:48:28
Core 666 a écrit : A moins de n'utiliser un serveur asthmatique je pense qu'il n'y a pas vraiment de différence. J'ai fais quelques mesures sur une page en HTML 4.01 sans feuille de style, où chaque attribut COLOR, WIDTH, SIZE et compagnie est indiqué de cette manière : |
cool un temoignage interessant, donc on peut dire que niveau rapidité c'est pareil.
PHP compilé, j'avais jamais entendu parler Mince ca doit etre bien de compiler ses scripts. Tu peux me dire les avantages inconvenients ?
Marsh Posté le 20-05-2003 à 12:08:59
masure a écrit : |
Pour les inconvénients ca va être rapide, car il n'y en a pas beaucoup Il n'existe aucune solution gratuite fiable, donc pour crypter et précompiler du PHP il faut mettre la main au porte feuille et c'est pas donné. De plus, si tu as l'habitude de bosser directement sur un serveur en production et qu'il faut compiler le code avant chaque upload, pour voir quelques secondes plus tard que tu as laissé un bug ca devient vite lourd. Le dernier inconvénient que je vois c'est la compatibilité : il n'est pas possible chez certains hébergeurs d'utiliser ce type de scripts en mutualisé.
Au niveau des avantages, il y en a pas mal. Le premier concerne la sécurité : ce n'est pas réversible, donc personne d'autre que toi n'a accès au code source de tes scripts. Ca permet aussi de limiter les dégats en cas d'intrusion sur le serveur : les mots de passe contenus dans les scripts sont inutilisables. Le code est plus compact (53 Ko contre 67 par exemple) et n'a pas besoin d'être compilé par PHP à chaque exécution : on gagne en temps d'éxecution et en charge machine.
Puis ya pas mal d'option sympas qu'on peut ajouter : date d'expiration, spécification des IP ou des plages IP sur lesquelles les scripts ont le droit d'être exécuté, texte clair en header inaltérable (pratique pour mettre une licence ...), bref, ca devient rapidement indispensable
Voila a quoi ca ressemble si tu n'en a jamais vu :
Marsh Posté le 20-05-2003 à 12:09:54
l'avantage n°1 de compiler c'est que personne ne peux récupérer tes sources
les deux "standards" sont Zend et IonCube qui proposent des outils de compilation, la dll de "décompilation" qui permet d'éxécuter le script est gratuite et il faut la placer sur le serveur.
j'avais fait un topic là dessus y'a un moment mais c'est parti en bide
> Core 666
t'utilises quel système ?
t'es hébergé chez qui ?
Marsh Posté le 20-05-2003 à 12:17:15
LA compilation est payante et l'exécution non c'est ça.. Enfin si c'est payant
Marsh Posté le 20-05-2003 à 12:19:48
masure a écrit : Merci a tous |
tu as essayé la classe de bench ?
Marsh Posté le 20-05-2003 à 12:24:43
Sh@rdar a écrit : > Core 666 |
J'ai acheté un dédié chez OVH, et j'utilise la solution proposée par Ioncube, car elle n'a que des avantages sur celle de Zend :
Je crois en plus (mais à vérifier, j'suis pas sûr) que Zend Optimizer n'est pas compatible avec l'excellent PHPA.
Marsh Posté le 20-05-2003 à 13:46:26
simogeo a écrit : |
J'ai regardé le code quand tu m as donné le lien hier. Comme je disais c'est tres simple, ca facilite juste la mise en place de point de chronométrage en fait mais c'est bien sympa.
Pour faire le bench par contre je suis pas super chaud pour plusieurs raisons :
1) les 2 syntaxes auront quasiement les meme perfs (surtout qd on comparera les temps d'exec avec un temps d'exec de requete sur une base)
2) je suis en stage et le week end j'ai pas trop envie de tester chez moi, sachant que j'ai plus de server.
enfin voila koi...
Marsh Posté le 20-05-2003 à 13:49:43
oki,
j'ai regardé aussi son fonctionnement mais ca fait chier de faire le test .. alors que j'en ai pas vraiment l'utilité pour le moment
s'tait pour savoir, merci
Marsh Posté le 19-05-2003 à 13:47:24
J'ai pas trouvé de débat qui parlait de ça dans mes recherches et j'aimerais bien savoir s'il vaut mieux :
- une structure plutot orientee sur une liste d'echo (ou print) pour générer du html
ou
- au contraire taper que du html et poser des balises php a chaque fois qu'on a besoin de script
Peut etre ca depend du rapport qu'on a entre la quantité de code statique (HTML pur) et dynamique (PHP genere le HTML). Dans cette hypothèse il faudait privilégier l'ouverture de balises php quand on a peu de php dans bcp de de html. Inversement, on fait une seule balise php et on genere tout le html en echo (ou print) quand peu de statique par rapport au dynamique...
Qu en pensez vous ?