switch() gourmand ?

VaN
Mammouth du PHP | 1107 Messages

08 déc. 2008, 15:47

Bonjour à tous,

J'ai un fichier index.php, qui utilise un système d'include() pour afficher bannière, menu, contenu, footer.

Voilà comment se passe mon affichage de contenu :
<div class="right">
        	
            <?php
		
			isset($_GET['module']) ? '' : $_GET['module'] = 'home';

			switch($_GET['module']) {
			
				case 'home' :
					include 'includes/mod.promotions.php';
					include 'includes/mod.nouveautes.php';
					break;
				case 'register' :
					include 'includes/mod.register.php';
					break;
				case 'activate' :
					include 'includes/mod.activate.php';
					break;
				case 'retrievePassword' :
					include 'includes/mod.retrievePassword.php';
					break;
				case 'createAnnonce' :
					include 'includes/mod.annonces.create.php';
					break;
				case 'displayAnnonce' :
					include 'includes/mod.annonces.display.php';
					break;
				case 'buyAnnonces' :
					include 'includes/mod.annonces.buy.php';
					break;
				case 'compte' :
					include 'includes/mod.monCompte.php';
					break;
				case 'profile' :
					include 'includes/mod.profile.php';
					break;
				case 'alertes' :
					include 'includes/mod.alertes.php';
					break;
				case 'page' :
					include 'includes/mod.pages.php';
					break;
				case 'factures' :
					include 'includes/mod.factures.php';
					break;
				case 'partenaires' :
					include 'includes/mod.partenaires.php';
					break;
				case 'search' :
					include 'includes/mod.search.php';
					break;
				case 'contact' :
					include 'includes/mod.contact.php';
					break;
}
			?>
            
         </div> 
Mon problème est qu'au moment du chargement de la page, il y a clairement un temps d'attente, au moment du switch(). Switch() est-elle une fonction gourmande ? Existe t'il un moyen d'optimiser ce bout de code ?

ViPHP
AB
ViPHP | 5818 Messages

08 déc. 2008, 15:58

Tu pourrais éventuellement remplacer ton switch par un tableau, mais à part faciliter la maintenance il ne devrait pas y avoir de différence significative au niveau du temps de traitement surtout pour un si petit nombre de cases. Ton pb ne vient certainement de ton ton switch mais de ce que tu inclus.

Eléphant du PHP | 353 Messages

08 déc. 2008, 15:58

bonjour à toi.
Je ne pense pas dire de bêtises (on sait jamais) mais le switch est une fonction plutôt optimisée qui ne prend pas trop de temps.
Ca me semble assez bizarre que cela te prenne du temps.
Le ralentissement ne viendrait pas plutôt de l'include ? (genre gros fichier bien long ?) :D
Au pire utilies un benchmark pour voir le temps d'affichage des includes.

VaN
Mammouth du PHP | 1107 Messages

08 déc. 2008, 16:07

Alors en effet, je viens de faire quelques tests, et il semblerait que ce ne soit pas le switch() le problème, mais un appel javascript un peu plus haut dans la page (pour changer l'apparence d'un <select>).

Problème résolu donc. Merci à vous.

lux
Eléphant du PHP | 372 Messages

08 déc. 2008, 18:44

L'avantage du switch si je me souviens bien, une fois qu'il à fini le cas, il ne continue pas de chercher. Donc normalement c'est optimisé 8-)

Mammouth du PHP | 959 Messages

08 déc. 2008, 18:47

L'avantage du switch si je me souviens bien, une fois qu'il à fini le cas, il ne continue pas de chercher.
Si il y a le
break;
:P

lux
Eléphant du PHP | 372 Messages

08 déc. 2008, 18:49

Merci pour cette précision que je n'avais pas mentionné :oops: