新手剛學PHP,目前開發需要滿足用phpexcel往資料庫插入1萬筆記錄(1筆記錄43列),每個資料插入前先查詢庫中是否存在,不存在則繼續插入,並更新原表置標誌,否則跳過該筆記錄。
現在的狀況是導入2000條資料要20多秒,導入1萬個資料就報500錯誤,導入失敗,查看存放上傳文件的目錄裡面也沒有該文件。 `$result=move_uploaded_file($_FILES'inputExcel',$uploadfile);
if(!$result)
{
die('no file!');
}
$objReader = PHPExcel_IOFactory::createReader('CSV')
->setDelimiter(',')
->setInputEncoding('GBK')
->setEnclosure('"')
->setLineEnding("\r\n")
->setSheetIndex(0);
$objPHPExcel = $objReader->load($uploadfile);
$sheet = $objPHPExcel->getSheet(0);
$highestRowNum = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
$highestColumnNum = PHPExcel_Cell::columnIndexFromString($highestColumn);
echo $highestRowNum.'+'.$highest
這邊無法取得行和列數。程式碼裡面已結加了set_time_limit=0,記憶體也改成128M。求大神指點
大家讲道理2017-05-16 13:01:12
單次導入1萬個數據,很容易超時,對伺服器的負載也大,可以考慮把1W條數據拆分成多次導入,這種大數據的導入可以使用異步的方式來完成,不要讓用戶等待。還有可以換考慮使用協程。
为情所困2017-05-16 13:01:12
既然是csv,那就沒必要使用PHPExcel了哈,這個開源庫,太耗內存了,之前我用的是這個庫,https://packagist.org/package...(似乎只支援PHP7), demo我就不寫了,自己去文件裡面找,導入幾十萬條都沒壓力,不謝哈。
再介紹一個,https://packagist.org/package...,沒壓力哈,建議題主先去了解一下csv是什麼東東,我們甚至可以自己寫一個csv導入類,感覺最高效&輕量級。