NearYou
@NearYou
PHP Developer

Возможно ли как то уменьшить время выполнение функции?

Доброго дня, есть файл .xlsx на ~ 17mb и 92000 строк, нужно его конвертировать в .csv, функция (под спойлером) делает это уже 40 минут и пока еще не конец, где то за час управится, возможно потому, что я делаю это на стареньком ноуте с 8Gb памяти? На реальном сервере будет быстрее? Возможно сам код поправить нужно?

Функция
function bigExel2csv($filesXlsx)
{
	// Read the Excel file.
	$reader = ReaderEntityFactory::createXLSXReader();
	try {
		$reader->open('attach/' . $filesXlsx);
	} catch (IOException $e) {
	}

	foreach ($reader->getSheetIterator() as $sheet) {
		foreach ($sheet->getRowIterator() as $row) {
			// do stuff with the row
			$cells = $row->getCells();
		}
	}
    $info = pathinfo($filesXlsx);
	//$callStartTime = microtime(true);
	//$format = 'Y-m-d';
	// Export to CSV file.
	$writer = WriterEntityFactory::createCSVWriter();

	try {
		$writer->openToFile(safe_file("files/" . $info['filename'] . '.csv'));
	} catch (IOException $e) {
	}
	$writer->setFieldDelimiter(";");
	foreach ($reader->getSheetIterator() as $sheetIndex => $sheet) {
		//Add sheets in the new file, as we read new sheets in the existing one
		/* if ($sheetIndex !== 1) {
        $writer->addNewSheetAndMakeItCurrent();
    } */
		// Set delimiter.
		foreach ($sheet->getRowIterator() as $row) {
			// ... and copy each row into the new spreadsheet
			$writer->addRow($row);
		}
	}
}
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы