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
2 réponses
-
Bonjour,
Tout dépend ce que contient ta fonction decrypter
-
Merci de ta réponse, voici les fonctions :
function crypter($chaine){ if($chaine != null){ $key = 'lacle'; $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $chaine, MCRYPT_MODE_CBC, $iv); $ciphertext = $iv . $ciphertext; $ciphertext_base64 = base64_encode($ciphertext); return $ciphertext_base64; } } function decrypter($chaine_crypter){ if($chaine_crypter != null){ $key = 'lacle'; $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $ciphertext_dec = base64_decode($chaine_crypter); $iv_dec = substr($ciphertext_dec, 0, $iv_size); $ciphertext_dec = substr($ciphertext_dec, $iv_size); $plaintext_dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $ciphertext_dec, MCRYPT_MODE_CBC, $iv_dec); return trim($plaintext_dec); } }
-
-
Bonjour,
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
-