PHP 内存泄露重现 include 匿名函数技术
这个坑估计全网没有人踩过,这篇应该是公开出来的第一篇,很多人就算是踩了这个坑,也不一定会触发,即使是触发了,也不一定发现的了。
这个是 include 或者是 require 对于匿名函数的内存泄露大坑。
很多市面上的 PHP 教程都说 include require 相当于把代码复制到那个位置,从这个代码示例验证来看,其实不是这样的!
$i=0; while (true) { if ($i%1000 == 0) { echo memory_get_usage()."\n"; sleep(1); } $i++; $b = 'b'; $render_func = function($d) use ($b) { $u = 1; //test3.php $x = function(){}; require 'test3.php'; }; $render_func($i); } return;
上面的代码内存泄露!每运行 1000 次增加 2M 内存左右!但是如果将 require 里面的代码直接放在那里,不会有内存泄露问题!
要弄懂这个问题,得重新分析下源代码了!
暂无