问题
我有一个magento商店,这个商店运行一个同步内部网产品和商店的脚本,这个脚本每运行1小时,我的服务器管理员阻止网站访问,因为这个脚本的查询速度很慢。
问题
我的脚本只读了一个CSV文件,每行检查SKU是否已经注册,如果已经更新了重量,库存和价格,有更好的方法吗?
这是我的剧本。
$produto = Mage::getModel('catalog/product');
$productId = $produto->getIdBySku($sku);
$produto->load($productId);
if ($produto->getId()) {
$stock = $produto->getStockData();
$stock['qty'] = $quantidade;
$stock['is_in_stock'] = $this->initStock($quantidade);
$stock['manage_stock'] = 1;
$stock['use_config_manage_stock'] = 1;
$produto->setData('price', $preco);
if ($altura > 0)
$produto->setData('volume_altura', $altura);
if ($comprimento > 0)
$produto->setData('volume_comprimento', $comprimento);
if ($largura > 0)
$produto->setData('volume_largura', $largura);
$produto->setData('weight', $this->initWeight($peso));
$produto->setStockData($stock);
$produto->save();
} else {
$produto = Mage::getModel('catalog/product');
$produto->setTypeId('simple');
$produto->setAttributeSetId(4);
$produto->setData('tax_class_id', 0);
$produto->setVisibility(1);
$produto->setStatus(1);
$produto->setData('sku', $sku);
$produto->setData('color', $cor);
$produto->setData('name', utf8_encode($descricao));
$produto->setData('marca', $this->initAttribute(148, $marca));
$produto->setData('codigo_barra', $codBarra);
$produto->setData('price', $preco);
if ($altura > 0)
$produto->setData('volume_altura', $altura);
if ($comprimento > 0)
$produto->setData('volume_comprimento', $comprimento);
if ($largura > 0)
$produto->setData('volume_largura', $largura);
$produto->setData('cost', $custo);
$stock['qty'] = $quantidade;
$stock['is_in_stock'] = $this->initStock($quantidade);
$stock['manage_stock'] = 1;
$stock['use_config_manage_stock'] = 1;
$produto->setStockData($stock);
$produto->setData('weight', $this->initWeight($peso));
$produto->save();
}
答案 0 :(得分:1)
有没有办法减少CSV文件中的项目数量?我的意思是,如果你每次都发送所有项目,并且每个项目你都会进行查询,你所做的查询数量以及完成脚本完成的时间将会过高。
我建议您只与商店同步新商品或带有更新值的商品,它还会减少CSV中的行数和查询数量,如果您在CSV文件中包含字段使用标志更新/新建或类似的东西,您可以避免第一个查询检查产品是否存在于"新"国旗被发现。
我希望它有所帮助。