我有这个PHP脚本我试图从命令行运行一次来修复MySQL数据库中的某些值。所以它运行了很多查询。我运行它,它会持续一段时间,直到它耗尽内存。运行带有大量MySQL查询的PHP脚本是否会产生这种情况,或者这是由于某种内存泄漏造成的?
$statement = 'SELECT users.language, users.created AS user_created,
posts.created, posts.id, blogs.user_id, posts.blog_id FROM users
JOIN blogs ON users.id = blogs.user_id
JOIN posts ON blogs.id = posts.blog_id
ORDER BY users.id
LIMIT %d, %d';
$limit = 100;
$page = 0;
$rows = array();
while($page == 0 || !empty($rows)) {
echo 'Fixing posts ' . ($page * $limit + 1) . ' to ' . ($page * $limit + $limit + 1) . "\n";
$rows = $db->prepare($statement)
->bindValue($page * $limit)
->bindValue($limit)
->execute();
foreach($rows as $row) { /*Do a bunch of stuff to fix the data*/ }
$page++;
}
编辑:我在$ page ++之前扔了一个echo memory_get_usage() , "\n";
,然后尝试在for循环中注释掉我做的查询,我发现内部查询占用了每个循环没有得到的额外内存重新分配。