有没有办法加快我的功能来处理更大的excel文件? 有我的代码:
$excelService = $this->get('xls.service_xls5');
$excelObj = $this->get('xls.load_xls5')->setReadDataOnly(true)->load('../web/bundles/static/pliki/'.$name);
$sheet = $excelObj->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
for ($row = 1; $row <= $highestRow; $row++){
$nazwaKlienta = $sheet->getCellByColumnAndRow(0,$row)->getValue();
$ulica = $sheet->getCellByColumnAndRow(1,$row)->getValue();
$miasto = $sheet->getCellByColumnAndRow(2,$row)->getValue();
$kod = $sheet->getCellByColumnAndRow(3,$row)->getValue();
$notatka = $sheet->getCellByColumnAndRow(4,$row)->getValue();
$kolor = $sheet->getCellByColumnAndRow(5,$row)->getValue();
if ($row == $highestRow) {
$excelObj->disconnectWorksheets();
unset($excelObj);
}
$em = $this->getDoctrine()->getManager();
$klient = new Klient();
$klient->setNazwa($nazwaKlienta);
(...)
$em->persist($klient);
$em->flush();
$klientId = $klient->getId();
$punkt = new Punkty();
$punkt->setIdKlienta($klient);
$em->persist($punkt);
$em->flush();
}
此代码打开现有的excel文件并读取所有数据并将其写入数据库。它工作正常,数据量约150-200但我需要处理大约2000行的数据。我如何用phpexcelBundle缓存它,或者还有另一种方法?
答案 0 :(得分:0)
缓存机制可以帮助您:
db中是否有$ name?如果是,则不执行此任务,只需从db中获取值。
您还可以使用APC设置给定$ name的到期时间。
请看一下:
rationally-boost-your-symfony2-application-with-caching-tips-and-monitoring
幻灯片27。