PHP - Pdo更新消耗太多内存

时间:2016-04-24 13:31:17

标签: php mysql pdo

我的控制台命令(基于Symfony)中的简单更新存在问题。

这是我的代码:

private
function showMemoryUsage()
{
    $memory = memory_get_usage();
    $memory/= 1024;
    if ($memory < 1024) {
        $this->output->writeln('Memory usage: ' . round($memory, 2) . ' KB');
        return;
    }

    $memory/= 1024;
    if ($memory < 1024) {
        $this->output->writeln('Memory usage: ' . round($memory, 2) . ' MB');
        return;
    }

    $memory/= 1024;
    if ($memory < 1024) {
        $this->output->writeln('Memory usage: ' . round($memory, 2) . ' GB');
        return;
    }
}

// ...

$stmt = $conn->prepare("UPDATE product_counters SET counter = :count WHERE id = :id");
$this->showMemoryUsage();

foreach($cursor as $k => $counterData) {
    if ($counterData['_id']) {
        $stmt->execute([':count' => (int)$counterData['count'], ':id' => (int)$counterData['_id']]);
        $stmt->closeCursor();
    }
}

$this->showMemoryUsage();

我必须更新88 000行。

首次使用内存仅为14 MB。第二个内存使用量约为400 MB。如何减少这种用量?我试过使用gc_enable&amp;&amp; gc_collect_cycles,我试图在foreach之后取消$stmt,但没有结果。你能建议一种减少内存使用的方法吗?

0 个答案:

没有答案