执行这个简单的代码(MySQL数据库)之后,我得到的内存少每次循环迭代1KB,所以以后1000'th迭代我有关于使用1MB内存。
现在,如果我要在循环长时间运行的脚本(约1 000 000次迭代),我会出来的内存迅速
$_db = Zend_Db_Table::getDefaultAdapter();
$start_memory = memory_get_usage();
for ($i=0; $i<1000; $i++) {
$update_query = "UPDATE table SET field='value'";
$_db->query($update_query);
}
echo 'memory used: '.(memory_get_usage()-$start_memory);
是否有一个释放的数据库查询使用的内存呢?
我试图把更新查询的功能,所以在离开这个功能使用的功能范围的资源后,应automaticaly释放:
function update($_db) {
$sql = "UPDATE table SET field='value'";
$_db->query($sql);
}
...
for ($i=0; $i<1000; $i++) {
update($_db);
}
但他们都没有!
我像“尝试更新一气呵成复式行”建议不感兴趣;)