Page 1 sur 1

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

Posté : 26 août 2019, 11:05
par Hohenheim
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>

Re: Conditions php à répétitions et lenteur, optimisation possible ?

Posté : 26 août 2019, 22:49
par @rthur
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.

Re: Conditions php à répétitions et lenteur, optimisation possible ?

Posté : 27 août 2019, 20:59
par Hohenheim
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>