Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de connexion PDO.

16 octobre 2020 à 19:42:10

Bonjour,

J'ai un énorme problème, lors de ma connexion PDO, j'ai cette erreur qui s'affiche:

 Allowed memory size of 134217728 bytes exhausted (tried to allocate 4096 bytes) in /var/www/html/nemosia/includes/db.php on line 9

J'ai essayé en modifiant l'allowed memory dans un ini_set, mais la j'ai littéralement un timeout.

PS: le load average, le cpu et la ram du serveur augmentent énormément lorsque je raffraichis la page après ceci.

Merci d'avance, bonne soirée.

  • Partager sur Facebook
  • Partager sur Twitter
16 octobre 2020 à 21:10:59

Code ? Pour utiliser autant de mémoire, il ne doit sûrement pas être optimisé voir contenir des erreurs (récursivité infinie par exemple) parce que ce n'est sûrement pas la connexion PDO en elle-même qui en est responsable.

A ce stade, jouer sur memory_limit, au pire, ne fera probablement rien ; au mieux, reportera un tout petit l'erreur.

-
Edité par julp 16 octobre 2020 à 21:13:32

  • Partager sur Facebook
  • Partager sur Twitter
16 octobre 2020 à 21:20:22

Voilà la connexion à la db:

<?php

$host = "xxx";
$dbname = "xxx";
$username = "xxx";
$password = "xxx";

try {
    $db = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

} catch(PDOException $e) {
    die("Impossible de se connecter à la base de données $dbname :" . $e->getMessage());
}

Et la seule fois ou je l'utilise: (ps: même en enlevant cela, même résultat.)

<?php

require "../network.php";
include('../network.php');

$user_ip = $_SERVER['REMOTE_ADDR'];
$req = $db->prepare("INSERT INTO stats (ip) VALUE(?)");
$req->execute(array($user_ip));




  • Partager sur Facebook
  • Partager sur Twitter
16 octobre 2020 à 22:12:57

require "../network.php";
include('../network.php');

On est d'accord que tu inclus deux fois le même script déjà ?

Le code ne peut pas être complet, ça ne peut pas venir (que) de ça. Impossible que ça puisse consommer ~ 130 Mo de mémoire.

Un de tes scripts s'inclut lui-même ou ils s'incluent mutuellement ? Changer les require/include en require_once/include_once pour éviter les inclusions multiples ?

-
Edité par julp 16 octobre 2020 à 22:17:51

  • Partager sur Facebook
  • Partager sur Twitter
16 octobre 2020 à 22:22:53

J'ai enlevé le include pour ne laisser que le require et toujours la même chose.
  • Partager sur Facebook
  • Partager sur Twitter
16 octobre 2020 à 22:26:00

Bonsoir,

Il manque le S à VALUE, ce qui veux dire que les erreurs PDO ne sont pas activés

quel est le code de network.php ?

  • Partager sur Facebook
  • Partager sur Twitter
17 octobre 2020 à 9:19:26

Voilà le code du network, en gros, c'est ce qui relie le fichier aux includes et à la db:

<?php

include('includes/db.php');
include('includes/functions.php');
include('stats/index.php');


J'ai corrigé le S à VALUES

-
Edité par RaphaelBouquillon 17 octobre 2020 à 9:20:02

  • Partager sur Facebook
  • Partager sur Twitter
17 octobre 2020 à 11:24:40

Tous tes codes complets ?

Si tu nous donnes une ligne après l'autre, on n'est pas prêt de trouver ce qui te bouffe ces 130 Mo de RAM sauf si vraiment tu es capable d'en identifier l'origine (du récursif quelque part ? une requête qui remonte potentiellement bien de trop de lignes et sur laquelle tu fais un fetchAll ? etc)

-
Edité par julp 17 octobre 2020 à 11:26:44

  • Partager sur Facebook
  • Partager sur Twitter