从命令行运行PHP脚本时内存不足

时间:2014-04-04 21:28:28

标签: php

我有这个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循环中注释掉我做的查询,我发现内部查询占用了每个循环没有得到的额外内存重新分配。

0 个答案:

没有答案