前提・実現したいこと
PHPExcelでエクセルファイルの取込→DBに反映をしているのですが
ファイルを展開するまででメモリオーバーを起こしてしまいました。
ソースコードの対応を行い、それは解消できたのですが、今度は展開だけで2分くらい時間を要してしまいます。
展開時間を短縮する方法は他に無いでしょうか?
発生している問題・エラーメッセージ
・ファイル展開に2分程度かかる
・ファイルサイズは268KB、セル数は1098行*56列
該当のソースコード
$log->putErr(PNAME,"EXCEL取込開始");
$reader = PHPExcel_IOFactory::createReader('Excel2007');
$log->putErr(PNAME,"EXCELロード開始");
$excel = $reader->load($xlsfile);
$log->putErr(PNAME,"EXCELロード終了");
試したこと
$log->putErr(PNAME,"EXCEL取込開始");
//追加→php://tempに保存する場合はキャッシュサイズを定義する
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
$cacheSettings = array( ' memoryCacheSize ' => '8MB');
//追加→一時ファイルに保存する場合は一時ファイルのパスを定義する
//PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
//$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_discISAM;
//$cacheSettings = array('dir' => '/tmp');
//PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
$reader = PHPExcel_IOFactory::createReader('Excel2007');
//追加→書式設定は読み込まない
$reader->setReadDataOnly(true);
$log->putErr(PNAME,"EXCELロード開始");
$excel = $reader->load($xlsfile);
$log->putErr(PNAME,"EXCELロード終了");
補足情報(FW/ツールのバージョンなど)
PHP 5.3.0
あなたの回答
tips
プレビュー