Estoy tratando de seleccionar datos de un campo mysql LONGBLOB, pero el uso de la memoria parece estar fuera de control. He probado con PDO y mysqli. (no hay problema para insertar los datos)
<?php $path = 'test.txt'; $pdo = new PDO('mysql:host=localhost;dbname=db', 'user', 'pass'); $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, TRUE); $stmt = $pdo->prepare("select contents from files where path = :path limit 1"); $stmt->bindValue(':path', $path, PDO::PARAM_STR); $result = $stmt->execute(); $stmt->bindColumn(1, $data, PDO::PARAM_LOB); $result = $stmt->fetch(PDO::FETCH_BOUND); var_dump(strlen($data)); var_dump(memory_get_peak_usage()); La salida cuando se ejecuta eso es:
ent(198608116)
int(1902241376)
por lo que la columna es de 198,61 MB, pero el uso de la memoria de los scripts alcanza 10 veces esos 1902,24 MB.
¿Alguna idea de lo que estoy haciendo mal?