php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #77598 Unbuffered queries; native prepared statements memory leak
Submitted: 2019-02-11 03:17 UTC Modified: 2019-02-11 03:41 UTC
From: dylan at php dot waywardrambler dot net Assigned:
Status: Duplicate Package: PDO MySQL
PHP Version: 7.3.2 OS: MacOS 10.14.3
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: dylan at php dot waywardrambler dot net
New email:
PHP Version: OS:

 

 [2019-02-11 03:17 UTC] dylan at php dot waywardrambler dot net
Description:
------------
Memory leak when running unbuffered queries in PDO with ATTR_EMULATE_PREPARES set to false.

Test script:
---------------
<?php
ini_set('memory_limit', '16M');

$pdo = new PDO('mysql:host=*;dbname=*', '*', '*');
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);

$result = $pdo->query("SELECT * FROM large_table");

foreach ($result as $i => $row)
    if ($i % 10000 === 0)
        printf("%10s %10s\n", $i, memory_get_usage());

Expected result:
----------------
consistent memory usage, eg:

         0     2097152
     10000     2097152
     20000     2097152
     30000     2097152
     40000     2097152

Actual result:
--------------
         0    2097152
     10000    4194304
     20000    8388608
     30000    12582912
     40000    14680064

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 16384 bytes) in /php on line 10

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2019-02-11 03:23 UTC] dylan at php dot waywardrambler dot net
-Status: Open +Status: Closed
 [2019-02-11 03:23 UTC] dylan at php dot waywardrambler dot net
Closed due to incorrect email
 [2019-02-11 03:41 UTC] requinix@php.net
-Status: Closed +Status: Duplicate
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 12:01:31 2024 UTC