【问题标题】:Update price, status stock, post status form CSV (more 20k products) in WOOCOMMERCE (Memory runs out on 3000 products)在 WOOCOMMERCE 中更新价格、状态库存、发布状态表格 CSV(更多 20k 产品)(内存用完 3000 个产品)
【发布时间】:2020-05-18 03:10:36
【问题描述】:

我在我的班级update() 的方法中使用读取 csv 文件的构造(大约 25000 行)

if(($handle = fopen($this->csv_url, 'r')) !== false) {

        $row = 0;

        while(($data = fgetcsv($handle)) !== false)
        {
            if ($row === 0) { $row++; continue; }

            // Doing update a few meta in current product
            // I detect product by sku

            unset($data);
            $row++;
        }

        fclose($handle);
    }

3000 种产品的内存已用完。 (在 php.ini 文件中设置 250MB)

有人有什么想法吗?对不起我的英语。

【问题讨论】:

  • 首先,你可以尝试使用$data = null而不是unset来更快地释放内存(stackoverflow.com/questions/584960/…)。另外,设置更高的WP_MEMORY_LIMITWP_MAX_MEMORY_LIMIT 怎么样?
  • 感谢您的评论。我试过使用 NULL - 它仍然不起作用。此外,memory_limit 当前设置为 256MB(最大值)。
  • 256MB 不是最大的,我已经为特定请求的特殊用例设置了 4GB。 (4096MB)

标签: php csv memory woocommerce fgetcsv


【解决方案1】:

我早就解决了这个问题;这是我发现的:

在每次循环迭代中(我每 20 次执行一次),我使用这个函数 wp_cache_flush()

结果,我有 86 MB 的已用内存没有积累:

【讨论】:

    猜你喜欢
    • 2020-10-29
    • 2019-03-29
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 2022-01-21
    • 2017-10-09
    相关资源
    最近更新 更多