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):
Lorsque je l'utilise, mon navigateur plante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
- 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 :
J'ai également tenté de mettre $sqlPDO en paramètre de la fonction récursive, même souci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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.
Partager