Edit report at https://bugs.php.net/bug.php?id=64511&edit=1
ID: 64511
User updated by: psiek at mscgva dot ch
Reported by: psiek at mscgva dot ch
Summary: Strange memory allocation error message spamming
Status: Open
Type: Bug
Package: MSSQL related
Operating System: ubuntu 12.10
PHP Version: 5.4.13
Block user comment: N
Private report: N
New Comment:
Good morning,
We have tested with 5.4.21 and that does not the trick, we still have memory allocation messages.
Regards,
Previous Comments:
------------------------------------------------------------------------
[2013-11-20 21:08:40] gordon dot stratton at gmail dot com
We experienced this problem on PHP 5.4.4, but it was fixed by upgrading to 5.4.21.
------------------------------------------------------------------------
[2013-07-31 14:30:42] psiek at mscgva dot ch
Hi,
I just added memory_get_usage and memory_get_peak_usage to my script and here is
the result:
[31-Jul-2013 16:20:56 Europe/Zurich] Script start
[31-Jul-2013 16:20:56 Europe/Zurich] Memory Get Usage: 524288
[31-Jul-2013 16:20:56 Europe/Zurich] Memory Peak Usage: 524288
[31-Jul-2013 16:20:56 Europe/Zurich] Script end
[31-Jul-2013 16:20:56 Europe/Zurich] PHP Fatal error: Allowed memory size of
268435456 bytes exhausted (tried to allocate 140188914343656 bytes) in Unknown
on
line 0
The problem comes after script execution. Perhaps there is a problem with
freeing object in memory?
Any idea?
------------------------------------------------------------------------
[2013-07-31 01:33:32] yohgaki@php.net
[Mon Mar 25 08:53:55 2013] [error] [client x.x.x.x] PHP Fatal error: Allowed
memory size of 536870912 bytes exhausted (tried to allocate 140429927214120
bytes) in Unknown on line 0, referer:
This log indicates that you have been exhausted available memory. (512MB)
When you get query result from your db server, records are stored in memory
which is not managed by PHP.
If you do
do {
$rowset = $query->fetchAll(PDO::FETCH_ASSOC);
if ($rowset)
{
$RecordsetFields[] = $rowset;
}
} while ($query->nextRowset());
Then results are stored in PHP managed memory. I wander why your script works(?)
even with the memory exhaustion error.
Are you sure that query result fit in your PHP managed memory?
How many records are there? and what the size of each record?
Could you use memory_get_usage()
http://jp2.php.net/manual/en/function.memory-get-usage.php
in the "do" loop to see memory usage of your script and report the result back?
------------------------------------------------------------------------
[2013-03-27 11:06:50] psiek at mscgva dot ch
Hi,
Thanks for your reply.
Here is a sample code that reproduce the error. Please note that sometimes this code not generate
the error, and I can't find why. When you reload the page, it mostly generated but a few time
not.
<?php
$connection = new PDO('dblib:dbname=xxx;host=yyy;', 'zxzxzx',
'zxzxzx');
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = $connection->query("xxx.dbo.zzzzz @ServerName = NULL, @ProcessName = NULL,
@LayoutID = NULL");
$RecordsetFields = array();
do {
$rowset = $query->fetchAll(PDO::FETCH_ASSOC);
if ($rowset)
{
$RecordsetFields[] = $rowset;
}
} while ($query->nextRowset());
print_r($RecordsetFields);
The query is working perfectly, excepted the message in error.log.
This is anoyong because we are monitoring errors in real time and this is generating 99% of false
positives.
Once again, thanks for your help.
Regards,
------------------------------------------------------------------------
[2013-03-26 16:31:38] laruence@php.net
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves.
A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external
resources such as databases, etc. If the script requires a
database to demonstrate the issue, please make sure it creates
all necessary tables, stored procedures etc.
Please avoid embedding huge scripts into the report.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=64511
--
Edit this bug report at https://bugs.php.net/bug.php?id=64511&edit=1