【发布时间】:2015-08-16 06:35:20
【问题描述】:
问题
我正在尝试在 PHP 中执行一个读取 CSV 文件的脚本,并且对于脚本读取的每一行,它都会获取代码以验证它是否已存在于数据库中。如果此代码存在于数据库中,则更新库存,如果不存在,则插入数据库。
我的 CSV 文件有 700 多行,每行至少执行 2 次查询,因此集成页面超时。
尝试 创建了一个禁用 GZIP 的 .htaccess 文件。
SetEnv no-gzip 1
将我的时间限制设置为超过 1000+
set_time_limit(9999999999);
发生了什么
当我运行脚本时,它会读取 40 行并停止执行并停止加载。
编辑
对每一行执行以下代码:
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;
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);
if ($produto->save()) {
$this->showLog('<EDIT> Produto com código [' . $codigo . '] editado com sucesso.', true);
$this->writeLog('<EDIT> Produto com código [' . $codigo . '] editado com sucesso.');
} else {
$this->showLog('<EDIT> Não foi possível editar o produto com código [' . $codigo . ']', false);
$this->writeLog('<EDIT> Não foi possível editar o produto com código [' . $codigo . ']');
}
} 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));
if ($produto->save()) {
$this->showLog('<NEW> O produto com código [' . $codigo . '] foi adicionado com sucesso.', true);
$this->writeLog('<NEW> O produto com código [' . $codigo . '] foi adicionado com sucesso.');
} else {
$this->showLog('<NEW> - Não foi possível adicionar o produto com código [' . $codigo . ']', false);
$this->writeLog('<NEW> - Não foi possível adicionar o produto com código [' . $codigo . ']');
}
}
已解决:
我在代码的开头发现了一个 OB_START(),但我没有使用 ob。当我删除脚本恢复工作正常。
【问题讨论】:
-
这些查询是否针对这样的事情进行了优化?您能在日志文件中看到任何错误吗?
-
您能提供您的查询吗?
-
看来你得增加max_execution_time
-
@Epodax 我编辑并插入执行查询的代码。
-
它总是停在 40,还是有时更多有时更少?
标签: php magento integration