长 PHP 脚本没有 运行 完全

Long PHP script does not run completely

问题

我正在尝试在 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。当我删除脚本时恢复正常。

除非你有异常 large/inefficient database/queries 运行宁 1400 次查询不应该花费太长时间以至于超时。

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

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

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