【问题标题】:Complete CSV not imported Successfully完整的 CSV 未成功导入
【发布时间】:2021-10-09 20:22:26
【问题描述】:

我正在使用以下脚本在 CI 3 中导入 CSV 文件,但它部分导入,未导入 csv 中的所有行正在导入。

$content = $this->csv_reader->parse_file($_FILES['products']['tmp_name']);
//print_r($content);
if (count($content) > 0) {
    function clean($string) {
       //$string = str_replace(' ', '-', $string); // Replaces all spaces with hyphens.
    
       return preg_replace('/[^ .@A-Za-z0-9\-\&\,\']/', '', $string); // Removes special chars.
    }
    foreach ($content as $csv_arr) {
        
        $insert_csv_arr = array(
            
            'brand_name' => clean(rtrim($csv_arr['BrandName'])),
            'keyword' => clean(rtrim($csv_arr['keyword'])),
            'amz_sold_by' => clean(rtrim($csv_arr['amzsoldby'])),
            'seller_code' => clean(rtrim($csv_arr['SellerCode'])),
            'product_link' => clean(rtrim($csv_arr['productlink'])),
            'asin' => clean(rtrim($csv_arr['asin'])),
            
        );
        //print_r($insert_csv_arr); die();
        $this->productmodel->insert($insert_csv_arr);   
    }

我也使用set_time_limit 增加了时间,但它不起作用。

例如,我有一张包含 465 种产品的表格,但只导入了 161 种产品。

我想知道CSV没有完全导入的可能原因是什么?

【问题讨论】:

  • 您的 PHP 最大执行时间设置为多少?
  • 我们知道脚本正在停止,所以如果您注释掉您的插入并取消注释前面的 print_r 语句,您会得到所有 465 个条目。然后检查第 162 行,因为它可能会把事情搞砸。还要查看您的错误日志。
  • @TimBrownlaw in print_r 仅打印行...不是全部
  • @HamzaZafeer 对不起,我很抱歉 - 您需要在 foreach 循环之外执行此操作以检查读取的总行数,以便查看它们。
  • @HamzaZafeer 你检查你的错误日志了吗?

标签: php csv import codeigniter-3 import-csv


【解决方案1】:

ini_set('max_execution_time', '0'); // 无限执行时间

在顶部的函数中使用此代码

【讨论】:

  • 这是个坏主意。最好找出它为什么要花这么长时间(如果这是正在发生的事情 - 我们不知道),而不是让它永远运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 2018-02-28
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 2013-08-28
相关资源
最近更新 更多