Optimisation code php
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, j'aimerais savoir si il existe un moyen d'optimisé ce code :
Merci d'avance
Nils0
<?php $timestamp_debut = microtime(true); require 'groups/functions.php'; $bdd = connexion_bdd(); $text = 'exemple@email.com'; $reqmail = $bdd->query('SELECT mail FROM espace_membre_membres'); $i = 0; while($mail = $reqmail->fetch()){ if($text == decrypter($mail['mail'])){ $i++; } } echo $i.'<br />'; $timestamp_fin = microtime(true); $difference_ms = $timestamp_fin - $timestamp_debut; echo 'Exécution du script : ' . $difference_ms . ' secondes.'; ?>
Merci d'avance
Nils0
A voir également:
- Optimisation code php
- Code ascii - Guide
- Optimisation pc - Accueil - Utilitaires
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
2 réponses
Bonjour,
Tout dépend ce que contient ta fonction decrypter
Tout dépend ce que contient ta fonction decrypter
Utilisateur anonyme
Merci de ta réponse, voici les fonctions :
Bonjour,
Tu peux probablement l'optimiser en cryptant le mail $text, et le mettant dans la clause WHERE du SQL, avec un COUNT(1) :
Pourquoi ça optimise ? Tu ne fais qu'une seule opération cryptographique au lieu de N.
Pourquoi j'ai dit « probablement » ? Parce que je ne sais pas combien coûte la fonction crypter par rapport à la fonction decrypter. Si la première coûte 10 fois la seconde, et que tu n'as que 5 lignes en base, alors mon code n'optimise rien.
Par contre, pour un grand nombre de lignes en base, c'est clairement plus efficace.
Xavier
Tu peux probablement l'optimiser en cryptant le mail $text, et le mettant dans la clause WHERE du SQL, avec un COUNT(1) :
<?php $timestamp_debut = microtime(true); require 'groups/functions.php'; $bdd = connexion_bdd(); $text = crypter('exemple@email.com'); $reqmail = $bdd->query("SELECT COUNT(1) as nb FROM espace_membre_membres WHERE mail='$text'"); $res = $reqmail->fetch(); echo $res['nb'] . '<br />'; $timestamp_fin = microtime(true); $difference_ms = $timestamp_fin - $timestamp_debut; echo 'Exécution du script : ' . $difference_ms . ' secondes.'; ?>
Pourquoi ça optimise ? Tu ne fais qu'une seule opération cryptographique au lieu de N.
Pourquoi j'ai dit « probablement » ? Parce que je ne sais pas combien coûte la fonction crypter par rapport à la fonction decrypter. Si la première coûte 10 fois la seconde, et que tu n'as que 5 lignes en base, alors mon code n'optimise rien.
Par contre, pour un grand nombre de lignes en base, c'est clairement plus efficace.
Xavier
oui, si je chiffre deux fois la meme chaine, je n'aurais pas le même résultat, le déchiffrage marche avec la clé ... https://www.php.net/manual/fr/function.mcrypt-encrypt.php