gpt4 book ai didi

php - Magento - PHP 脚本内存限制过载

转载 作者:行者123 更新时间:2023-12-02 08:20:59 24 4
gpt4 key购买 nike

我在将仓库系统与电子商务 Magento 同步的脚本中遇到问题。

脚本正在将 Magento 的记录直接更新到数据库、价格和数量。

fatal error :第 962 行/lib/Zend/Cache/Backend/File.php 中允许的内存大小 33554432 字节已耗尽(尝试分配 8309 字节)

这显然是一个消耗内存的脚本,有什么办法可以减少它的饥饿感吗?:)

我可以增加内存容量,但这不是解决方案,因为目前大约有 700MB 的可用内存。

.csv 文件大约有 1000 行。

<?

define('MAGENTO', realpath(dirname(__FILE__)));
require_once MAGENTO . '/app/Mage.php';

umask(0);
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$count = 0;
$file = fopen(MAGENTO . '/SECRET-FOLDER-WITH-CSV/quantity-and-prices.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE) {

if ($count == 0) {
foreach ($line as $key => $value) {
$cols[$value] = $key;
}
}

$count++;

if ($count == 1)
continue;

#Convert the lines to cols
if ($count > 0) {
foreach ($cols as $col => $value) {
unset(${$col});
${$col} = $line[$value];
}
}

// Check if SKU exists
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', $sku);

if ($product) {

$productId = $product->getIdBySku($sku);
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
$stockItemId = $stockItem->getId();
$stock = array();

$newprice = $line[2];

$product->setPrice($newprice)->save();


if (!$stockItemId) {
$stockItem->setData('product_id', $product->getId());
$stockItem->setData('stock_id', 1);
} else {
$stock = $stockItem->getData();
}

foreach ($cols as $col => $value) {
$stock[$col] = $line[$value];
}

foreach ($stock as $field => $value) {
$stockItem->setData($field, $value ? $value : 0);
}


$stockItem->save();

unset($stockItem);
unset($product);
}

echo "<br />Stock updated $sku";
}
fclose($file);

最佳答案

将每个循环的 Product 的 ->loadByAttribute 替换为您要迭代的单个 Product 的集合加载:

  • 循环您的文件行并存储您需要的每个 SKU
  • 使用此 SKU 数组加载集合:

    $collection = Mage::getModel('catalog/product')->getCollection() ->addAttributeToSelect('entity_id') //add what you need but restrict it the most possible ->addAttributeToSelect('sku', $skuArray) ->load()

  • 迭代您的集合并执行您需要的操作

关于php - Magento - PHP 脚本内存限制过载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17343533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com