[PHP 5.3] Fonction récursive et connexion
Bonjour,
j'utilise une fonction récursive (Permet de générer aléatoirement un nom de fichier, puis vérifie si il existe déjà en BDD):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| function random_name($fileName) {
// Récupère l'extention du fichier
$pos = strrpos($fileName, '.');
$ext = strtolower(substr($fileName, $pos));;
// Génère un fileName aléatoire
$fileName_random = "";
$len = rand(1,11);
$str= "abcdefghijklmnopqrstuvwxyz";
for($i=0;$i<$len;$i++)
{
switch(rand(1,2)){
case 1: $fileName_random.= $str[rand(0,25)];
case 2: $fileName_random.= rand(0,9);
}
}
// Replace l'extention du fichier
$fichier = $fileName_random.$ext;
// Vérifie si le nom de fichier n'existe pas déjà
$query = $GLOBALS['db']->prepare("select fileName from image where fileName = :fichier limit 1");
$query->bindParam(':fichier', $fichier, PDO::PARAM_STR);
$query->execute();
$row = $query->fetchAll();
$query= null;
// return
if (count($row) > 0){
return random_name($fileName);
} else {
return $fichier;
}
} |
Lorsque je l'utilise, mon navigateur plante :
- La connexion a été réinitialisée (pour Firefox)
- Erreur 101 (net::ERR_CONNECTION_RESET) : Erreur inconnue (pour Google Chrome)
J'ai 3800 entrées en BDD, donc la fonction s'arrête bien à un moment.
Si j'enlève la récursivité, le code fonctionne.
Si j'enlève la requête SQL, le code fonctionne.
Voici ma connexion dans mon fichier de config appelé plus haut :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
$dbhost = 'localhost';
$dbuser = 'xxx';
$dbpass = 'xxx';
$dbname = 'xxx';
try{
$sqlPDO = new PDO('mysql:host='.$dbhost.';dbname='.$dbname, $dbuser, $dbpass);
$sqlPDO->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
$sqlPDO->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
} catch(PDOException $e){
//echo 'Erreur : '.$e->getMessage().'<br /><br />';
die("Une erreur est survenue, le site est temporairement indisponible");
}
$GLOBALS['db'] = $sqlPDO; |
J'ai également tenté de mettre $sqlPDO en paramètre de la fonction récursive, même souci.
Merci de votre aide, j'espère que l'erreur n'est pas trop idiote :)
Merci
Edit : je souhaiterai ajouter que si vous n'avez pas la réponse, n'hésitez pas à me proposer des tests pour mieux cibler le problème.
Je travail sous WAMP en Local.