我正在开发一个循环/迭代超过10,000次的PHP脚本:
foreach ($array_with_items as $item) {
// Instantiate the object
$obj_car = new CarAds($puk, 'ENG', '5');
$obj_car->detail1 = "Info about detail1";
$obj_car->detail2 = "Info about detail2";
$obj_car->detail3 = "Info about detail3";
$obj_car->detail4 = "Info about detail4";
// Saves to the database
$obk_car->save;
}
当我运行此代码时,我的机器内存不足。在这个foreach循环中,我该怎么做才能清理内存?
答案 0 :(得分:8)
您将实例化为CarAds对象作为$ array_with_items项目计数。每一个都分配内存。
在save()方法之后,您应该使用unset()函数释放对象:
// Saves to the database
$obj_car->save;
// Unset unneeded object
unset($obj_car);
您可以使用memory_get_usage()检查您的内存消耗(请参阅http://php.net/manual/en/function.memory-get-usage.php)
答案 1 :(得分:5)
在循环结束时尝试unset($obk_car)
。
答案 2 :(得分:2)
unset
foreach
循环
unset($obj_car);
如果您的脚本仍需要更多内存,可以在此行php.ini
增加limit:
memory_limit = 128M
修改:
gc_collect_cycles