长PHP脚本无法完全运行

时间:2015-06-02 12:47:28

标签: php magento integration

问题

我正在尝试在PHP中执行一个读取CSV文件的脚本,并且脚本读取的每一行都会获取代码以验证它是否已存在于数据库中。如果数据库中存在此代码,则更新库存,如果不存在,则只需插入数据库。

我的CSV文件有700多行,每行至少执行2次查询,因此集成页面超时。

ATTEMPS 创建了一个禁用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。当我删除脚本回来工作正常。

1 个答案:

答案 0 :(得分:1)

除非你有一个特别大/效率低的数据库/查询运行1400查询不应该花这么长时间超时。

如果可能,将脚本作为cli脚本运行,查看输出内容和运行时间(cli脚本没有最长执行时间)。

您至少需要包含伪代码,以便我们可以帮助调试它。

要进行更多调试,请在每次迭代中添加输出行并刷新输出缓冲区。这将确保页面不会超时。