IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP Vs. HTML


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut PHP Vs. HTML
    Bonjour,

    je me suis toujours demandé ce qui était le plus rapide en temps d'affichage de la page :

    Ca :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <html>
    <body>
     
    toutes mes autres balises html avec quelques ouvertures php pour affichage des variables
     
    </body>
    </html>

    Ou ca :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $html = '<html>';
    $html .= '<body>';
     
    toutes mes autres balises html affichées dans ma variable PHP
     
    $html .= '</body>';
    $html .= '</html>';
     
    echo $html;

    En gros, vaut il mieux ouvrir 36000 <?php ?> dans une page ou alors tout mettre dans une variable (concaténation) et afficher tout à la fin ?

    J'aurais tendance à dire la 2ieme méthode (moins d'appels serveur) mais comme je suis feignant j'ai jamais testé sur de grosses quantités de code alors je demande

    Merci

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    ce qui est sur, est qu'en utilisant la seconde façon de faire on perd toutes les possibilités fournies par un éditeur >WYSIWYG, donc une perte de confort au développement.
    s'il y a une différence entre les deux en terme de temps d'exécution, je doute quelle soit significative.
    le choix en est vite fait pour ma part

    J'aurais tendance à dire la 2ieme méthode (moins d'appels serveur)
    je ne pense pas que cela soit vrai, une fois que la requête demande un script php le serveur entre en jeux et il exécute la totalité du script, et je ne me rappel pas trop où (ça remonte à des années) j'ai lu que le html en dehors des <?php ?> sera interprété de façon similaire a du <?php echo "html";?>.

  3. #3
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Salut,

    Les deux sont pareil niveau affichage html (je ne parle pas du traitement sur le serveur) car dans un premier cas tu as un fichier avec des codes html et dans le deuxième, tu aura exactement la même page ! (puisque à la fin tu fait un echo de ta variable qui contient tous les codes avant de les envoyer)

  4. #4
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonjour,

    Il est clair qu'utiliser la première solution est plus performante, à tous les niveaux...

    Ne pas utiliser PHP permet au système d'éviter d'allouer des espaces en mémoire, il ne fait qu'envoyer au buffer.

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    De mon coté aussi je n'ai pas de doc officiel sous le coude, mais il me semble avoir lu que du HTML brut serait plus rapide de que de le stocker dans une variable, voir plusieurs variables.

    Le raisonnement est simple.
    Stocker du contenu dans une variable (html ou pas d'ailleurs) c'est de l'espace mémoire alloué au serveur (pc), mais aussi cela demandera une analyse à supplémentaire l'interpréteur Php.
    En somme : Pas de <?php ... ?>, pas d'analyse, donc gain en performance.

    De plus, il y aurait aussi une différence de performance sur les 2 syntaxes suivantes (les séparateurs) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $fois = 'fois';
     
    // 1/ Séparateur : simple quote (ou apostrophe)
    $html = '<div>Il était une $fois ...</div>';
     
    // 2/ Séparateur : double quote (ou guillemets)
    $html .= "<div>Il était une $fois ...</div>";
    Le cas 1 (simple quote) serait plus rapide car il demande aucune analyse supplémentaire, et le $foie n'aura aucun effet.
    Il sera afficher : il était une $fois ...

    Par contre, pour le cas 2 (double quote), il serait moins performant car l'interpréteur Php devra d'analyser la chaine entière au cas ou il y aurait des variables à interpréter, dans tel cas cela demandera de générer le contenu des variables stocké en mémoire (si on peu dire).
    Il sera affiché : il était une fois ...

    Le fait d'utiliser des variables devrait donc avoir une incidence sur les performance, théoriquement.
    A coté de ça, les serveurs (ou pc) sont de plus en plus performants, des espaces de stockages/mémoires de plus en plus grands aussi, ce qui fait qu'il sera peut être difficile de le percevoir.
    Pour s'en rendre compte, il faudrait faire un comparatif sur du contenu très volumineux à mon sens.


    Enfin, c'est ce que j'ai pu lire.

  6. #6
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    aie j'ai utiliser la seconde méthode

    Par contre j'ai utilisé cette méthode que pour l'affichage dans mon div principal par ajax donc ma variable $html ne contient pas enormement de caractères (22k au max). Pour l'optimisation via les simples quotes etc normalement j'ai bien optimisé

    Je me suis aidé de cette page qui même si elle n'apprend rien d'extraordinaire donne un ordre d'idée du temps de telle méthode de prog par rapport à une autre.

    Bon je vais réfléchir i je change ou pas ma méthode de prog

    Merci

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    aie j'ai utiliser la seconde méthode

    Bon je vais réfléchir i je change ou pas ma méthode de prog
    Faut pas non plus exagérer.

    J'utilise un peu à tour de bras le stockage du html dans des variables, ce n'est pas pour autant que le serveur s'écroule, ou met des heures pour générer le html.

    Bon, ça dépend de pleins de paramètres, mais si on généralise un peu, ce n'est pas le stockage du HTML dans des variables qui provoquent le plus de lenteur, c'est tout les traitements qu'il y a autour (à mon avis).
    Comme faire une requêtes (voir des dizaines, même une centaine qui sait), des alternatives à en plus finir, des manipulations sur des chaine, des calculs, etc, etc ...

    C'est l'analyse de tout ça qui va demander d'optimiser ou non son code, comme avoir recourt à toute sorte de mise en cache par exemple.

    Donc, faire attention à ne pas stoker tout et n'importe quoi dans des variables, ok, mais ce sont les traitements Php provoquent vraiment des ralentissements, c'est surtout là qu'il faut faire gaffe.

  8. #8
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Merci Petibidon article intéressant


    Citation Envoyé par RunCodePhp Voir le message
    Donc, faire attention à ne pas stoker tout et n'importe quoi dans des variables, ok, mais ce sont les traitements Php provoquent vraiment des ralentissements, c'est surtout là qu'il faut faire gaffe.

    Oui c'est sur par contre j'avais remarqué quelque chose de bizarre sur un bout de code (que je n'ai plus) : lors de la manipulation de tableau php de grande capacité > 100k éléments, lors d'une boucle foreach par exemple j'obtenais un out of memory si j'incidais mon tableau moi meme ($tab[$i]=...; $i++) au lieu de le laisser faire automatiquement ($tab[]=...) j'ai jamais compris pourquoi

    Sinon, comme le post commence à dévier, qui aurait des idées idées d'optimisation de ce bout de code me servant à simuler un combat entre 2 troupes

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
     
    //On calcule le niveau d'anticipation
    if(($attaquant_technologie['anticipation'] - $defenseur_technologie['anticipation']) > 0){
    	$rand_attaquant = number_format(50 + ($attaquant_technologie['anticipation'] - $defenseur_technologie['anticipation']) * 5 / 2, 0);
    	$rand_defenseur = 100 - $rand_attaquant;
    	}else if(($defenseur_technologie['anticipation'] - $attaquant_technologie['anticipation']) > 0){
    		$rand_defenseur = number_format(50 + ($defenseur_technologie['anticipation'] - $attaquant_technologie['anticipation']) * 5 / 2, 0);
    		$rand_attaquant = 100 - $rand_defenseur;
    	}else{
    			$rand_attaquant = 50;
    			$rand_defenseur = 50;
    		}
     
     
    if(isset($defenseur)){
     
    	$round=1;
     
    	while($round<=5 && !empty($attaquant) && !empty($defenseur)){
     
    		shuffle($attaquant);
    		shuffle($defenseur);
     
    		if(count($attaquant) >= count($defenseur)){
    			$grand='attaquant';
    			$petit='defenseur';
    		}else{
    			$grand='defenseur';
    			$petit='attaquant';
    		}
     
    		$residu = array_diff_key(${$grand}, ${$petit});
     
    		foreach(${$petit} as $cle=>$valeur){	
     
    			//l'attaquant attaque le premier sinon c'est le defenseur
    			if((mt_rand(1, 100) <= $rand_attaquant)){
    				//Calcul du coup critique eventuel (X5)
    				(mt_rand(1, 100) <= $unites_desc_attaquant[$attaquant[$cle]['type']]['coup_critique']) ? $coup_critique_attaquant = 5 : $coup_critique_attaquant = 1;
    				$degats = $coup_critique_attaquant * $attaquant[$cle]['valeur_attaque'] * (100 - $unites_desc_defenseur[$defenseur[$cle]['type']][$attaquant[$cle]['type_attaque']]) / 100 - $unites_desc_defenseur[$defenseur[$cle]['type']]['armure'];
    				if($degats > 0) 		
    					$defenseur[$cle]['vie'] -= $degats;
     
    				//Si l'unité du defenseur est vivante elle contre attaque si elle ne l'a pas déjà fait auparavant sur une autre unité 
    				if($defenseur[$cle]['vie'] <= 0){
    					$defenseur_pertes[$defenseur[$cle]['type']][$round]++;
    					unset($defenseur[$cle]);
    				}else{
    					(mt_rand(1, 100) <= $unites_desc_attaquant[$attaquant[$cle]['type']]['coup_critique']) ? $coup_critique_defenseur = 5 : $coup_critique_defenseur = 1;
    					$degats = $coup_critique_defenseur * $defenseur[$cle]['valeur_attaque'] * (100 - $unites_desc_attaquant[$attaquant[$cle]['type']][$defenseur[$cle]['type_attaque']]) / 100 - $unites_desc_attaquant[$attaquant[$cle]['type']]['armure'];
     
    					if($degats > 0){ 		
    						$attaquant[$cle]['vie'] -= $degats;
    						if($attaquant[$cle]['vie'] <= 0){
    							$attaquant_pertes[$attaquant[$cle]['type']][$round]++;
    							unset($attaquant[$cle]);
    						}
    					}	
    				}
     
    			}else{
    				//Calcul du coup critique eventuel (X5)
    				(mt_rand(1, 100) <= $unites_desc_defenseur[$defenseur[$cle]['type']]['coup_critique']) ? $coup_critique_defenseur = 5 : $coup_critique_defenseur = 1;
    				$degats = $coup_critique_defenseur * $defenseur[$cle]['valeur_attaque'] * (100 - $unites_desc_attaquant[$attaquant[$cle]['type']][$defenseur[$cle]['type_attaque']]) / 100 - $unites_desc_attaquant[$attaquant[$cle]['type']]['armure'];
    				if($degats > 0) 		
    					$attaquant[$cle]['vie'] -= $degats;
     
    				//Si l'unité du defenseur est vivante elle contre attaque si elle ne l'a pas déjà fait auparavant sur une autre unité 
    				if($attaquant[$cle]['vie'] <= 0){
    					$attaquant_pertes[$attaquant[$cle]['type']][$round]++;
    					unset($attaquant[$cle]);
    				}else{
    					(mt_rand(1, 100) <= $unites_desc_defenseur[$defenseur[$cle]['type']]['coup_critique']) ? $coup_critique_attaquant = 5 : $coup_critique_attaquant = 1;
    					$degats = $coup_critique_attaquant * $attaquant[$cle]['valeur_attaque'] * (100 - $unites_desc_defenseur[$defenseur[$cle]['type']][$attaquant[$cle]['type_attaque']]) / 100 - $unites_desc_defenseur[$defenseur[$cle]['type']]['armure'];
     
    					if($degats > 0){ 		
    						$defenseur[$cle]['vie'] -= $degats;
    						if($defenseur[$cle]['vie'] <= 0){
    							$defenseur_pertes[$defenseur[$cle]['type']][$round]++;
    							unset($defenseur[$cle]);
    						}
     
    					}	
    				}
     
    			}
     
    		}
     
    		//Remise  à jour du petit tableau
    		${$petit} = array_values(${$petit});
    		$cle2=0;		
     
    		foreach($residu as $cle=>$valeur){
     
    			if(!isset(${$petit}[$cle2]) && !empty(${$petit})){
    				$cle2=0;
    				${$petit} = array_values(${$petit});
    			}else if(empty(${$petit})){
    				break;
    			}
     
    			//Calcul du coup critique eventuel (X5)
    			(mt_rand(1, 100) <= ${'unites_desc_'.$grand}[${$grand}[$cle]['type']]['coup_critique']) ? $coup_critique_{$grand} = 5 : $coup_critique_{$grand} = 1;
    			$degats = $coup_critique_{$grand} * ${$grand}[$cle]['valeur_attaque'] * (100 - ${'unites_desc_'.$petit}[${$petit}[$cle2]['type']][${$grand}[$cle]['type_attaque']]) / 100 - ${'unites_desc_'.$petit}[${$petit}[$cle2]['type']]['armure'];
    			if($degats > 0) 		
    				${$petit}[$cle2]['vie'] -= $degats;
     
    			//Si l'unité du defenseur est vivante elle contre attaque si elle ne l'a pas déjà fait auparavant sur une autre unité 
    			if(${$petit}[$cle2]['vie'] <= 0){
    				${$petit.'_pertes'}[${$petit}[$cle2]['type']][$round]++;
    				unset(${$petit}[$cle2]);
    			}
     
    			$cle2++;
     
    		}
     
    		//Remise à jour des tableaux
    		$attaquant = array_values($attaquant);
    		$defenseur = array_values($defenseur);
     
    		$round++;
    	}
    }

    Merci

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    Des éléments de réponse ici :

    http://m-fernandez.developpez.com/ar.../bench/#LIII-B

    Avis perso, les rapports gain/cout dans chacun des cas est tellement minime que ça vaut pas vraiment le coup de se prendre le chou avec ça.

Discussions similaires

  1. HTML dans PHP, PHP dans HTML...
    Par jeremy_chauvel dans le forum Langage
    Réponses: 3
    Dernier message: 24/04/2006, 20h28
  2. Réponses: 5
    Dernier message: 11/04/2006, 18h12
  3. Appeler une fonction d'un script PHP depuis HTML
    Par barthelv dans le forum Langage
    Réponses: 31
    Dernier message: 27/12/2005, 11h25
  4. Formulaires ? PHP ou HTML ?
    Par ghyosmik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 15/11/2005, 10h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo