|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2009-08-24 14:28 UTC] jani@php.net
[2009-08-25 14:19 UTC] pearl1985 at interia dot pl
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 11:00:02 2025 UTC |
Description: ------------ When I was using function lambda in class, I saw that it is using a lot of operating memory. I saw this error when the script was sending e-mails reports to users registered in my service. Reproduce code: --------------- <?php class example { function test() { $var = create_function('', '$a = 1;$b=2;$c=$a+$b;'); $var(); unset($var); } } $example = new example; for($i=0;$i<=10000;$i++) { $example->test(); } echo 'Results after remove lambda'."\n"; echo 'Memory limit: '.ini_get('memory_limit')."\n"; echo 'Usage: '. round(memory_get_usage()/1024/1024, 1)."\n"; echo 'Peak:'. round(memory_get_peak_usage()/1024/1024, 1); echo "\n"; ?> Expected result: ---------------- I expected a slight growth of operating memory usage by script. By using endless loop, I expect the script will be executing even for 2 hours, thanks to correction of appropriate php configuration directive. Actual result: -------------- When I used endless loop while(true), php engine ended its work after 2 minutes,generating error "PHP Fatal error: Allowed memory size of 41943040 bytes exhausted (tried to allocate 40961 bytes)"