[RESOLU] Conditions php à répétitions et lenteur, optimisation possible ?

Hohenheim
Invité n'ayant pas de compte PHPfrance

26 août 2019, 11:05

Bonjour à tous et à toutes,

Ca fait des années que je m'intéresse très tranquillement à PHP mais j'ai toujours un niveau très débutant :mrgreen:

Mon petit projet personnel que je réalise pour le fun en ce moment c'est de :
1. tirer une image randomisée d'un dossier
2. afficher son nom sans l'extension ni ce qui suit le underscore
3. afficher un mot aléatoire via un array_rand à coté du nom

jusque là pas de soucis.

Ensuite suivant le array_rand j'ai une cascade de conditions.
Ca marche très bien, mais c'est très lent (+40 secondes pour afficher la page qui est sur USBWebserver sur une clé USB, mais avant la série de cascade, ça s'affichait de suite).

En gros :
array_rand (le 3.)
if ► texteA ► solution A, solution B…
if solution A ► résultat 1, résultat 2…
if résultat 1 ► écrire solution A + résultat 1 + texte z

ça ne descend pas au dela de 3 if en profondeur, mais j'ai 4 ou 5 fois ce genre de conditions à répétitions.
Y a t il un moyen de moins saturer le serveur en optimisant mon écriture ?

Il y a quelques temps je proposai toutes les solutions dans un seul array_rand, la liste était longue mais ça allait très vite. Mais statistiquement les chances n'étaient pas les mêmes d'avoir tel ou tel résultat, donc je voulais remettre ça bien. Mais maintenant que statistiquement c'est bon, c'est lent :mrgreen:

Si quelqu'un peut m'aider, merci beaucoup =D>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

26 août 2019, 22:49

Difficile d'optimiser un code sans le voir et sans l'avoir conçu :-/

Regarde la fonction PHP microtime(), et notamment l'exemple 3 de la doc :
https://www.php.net/manual/fr/function.microtime.php
ça va te permettre de mesurer précisément le temps d'exécution de ton script. Place des mesures à différents endroits pour déterminer où ça prend le plus de temps.
Quand tout le reste a échoué, lisez le mode d'emploi...

Hohenheim
Invité n'ayant pas de compte PHPfrance

27 août 2019, 20:59

Merci @rthur
Visiblement c'est un enchainement if/else if/else qui ralenti le tout, si j'enlève le else if, ça redevient fluide. Donc j'ai repensé les variables.

Merci, je ne connaissais pas et ça m'a bien aidé =D>