WTF Memory Error Annormal

Bonjour, j'ai une erreur qui ne devrait pas s'afficher, car la mémoire utilisé est inférieure à la mémoire maximale :
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 106496 bytes) in C:\wamp64\www\db_upload\download.php on line 7
Pourquoi cela m'arrive t-il ?
Merci d'avance.

C'est un programme qui permet de télécharger des énormes fichier séparés en plusieurs blob dans une base de données sql :
<?php
if(isset($_GET['file']))
{
    $file_to_download = $_GET['file'];
    $dbh = new PDO('mysql:host=localhost;dbname=db0001', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    $reponse = $dbh->prepare("select data, mime from `files-v2` where name=?");
    $reponse->execute(array($file_to_download));
    //$mime = $reponse->fetch()['mime'];
    header('Content-type: application/octet-stream');
    while($data = $reponse->fetch()['data'])
    {
        echo $data;
    }
}
header('Location: index.php')
?>


Les "blobs" font 100Ko

1 réponse

  1. Modérateur
    De base on évite de mettre les fichiers dans la BDD, on préfère les enregistrer sur le disque du serveur et faire un lien vers eux.
    Cela permet d'éviter de surcharger la base de données.

    Quelle est la taille des données que tu veux afficher ?
    0
    1. Les blobs font 100Ko
      0
    2. Je mets les fichiers dans la BDD à cause de la limite d'Inodes
      0
    3. Modérateur
      Tu ne retourne qu'un seul blob à la fois ?
      Car dans ta requête je ne vois pas d'ordre pour les blobs (au cas où le SGBD inverserait 2 lignes par exemple.
      0
    4. Je retournes un seul blob à la fois.
      0
    5. Pourtant, ça me dit que la mémoire utilisée est de 106496 bytes et que la mémoire totale est de 8388608 bytes.
      0