Estoy tratando de recorrer un documento de 3mb Excel, para obtener todos los datos que luego tendré que insertar en la base de datos. La hoja de trabajo que estoy usando tiene 6500 filas, pero puede variar en el futuro. Me he dado cuenta de que a pesar de que estoy usando técnicas de ahorro de memoria recomendadas, todavía tropiezaProblema de memoria PHPExcel
$reader = PHPExcel_IOFactory::createReaderForFile($file_path);
$reader->setReadDataOnly(true);
//$sheets = $this->getWorksheetNames($file['tmp_name'], 0);
$reader->setLoadSheetsOnly('spreadsheetname');
$chunkFilter = new IPO_Reader();
$reader->setReadFilter($chunkFilter);
$highestRow = 10000; //$this->objWorksheet->getHighestRow();
$chunkSize = 1;
$highestColumn = "Y";
for ($startRow = 2; $startRow <= $highestRow; $startRow += $chunkSize)
{
$chunkFilter->setRows($startRow, $chunkSize);
$objPHPExcel = $reader->load($file_path);
for($row = $startRow ; $row <= $startRow + $chunkSize; $row++)
{
$this->read_row = $objPHPExcel->getActiveSheet()->rangeToArray('A'.$row.':'.$highestColumn.$row, null, true, true, true);
$this->read_row = end($this->read_row);
foreach($this->read_row as $column => $value)
{
$db_column_name = $this->_getDbColumnMap($column);
if(!empty($db_column_name))
{
$this->new_data_row[$db_column_name] = $this->_getRowData($value, $column);
}
}
$this->read_row = null;
$this->new_data_row['date_uploaded'] = date("Y-m-d H:i:s");
$this->new_data_row['source_file_name'] = $file_name;
$ipo_row = new Model_UploadData_IPO();
$ipo_row->create($this->new_data_row);
$this->new_data_row = null;
unset($ipo_row);
gc_collect_cycles();
}
$objPHPExcel->disconnectWorksheets();
unset($objPHPExcel);
gc_collect_cycles();
cuando pruebo el uso de memoria antes de desarmar el objPHPExcel y después, no hay aumento de memoria, estoy realmente confundido, ya que la división en fragmentos no parece permitirme borrar la memoria después de cada fragmento, y el uso aumenta gradualmente, y con un límite establecido en 250MB, solo me permite agregar ~ 500 registros
y esto no último problema =) sólo echar un vistazo de http://stackoverflow.com/questions/6857075/problem-with-excell-export (comer 500MB) – Subdigger
medio perdida lamentable de la oración allí. me permite agregar solo ~ 500 registros –
Kasia: puede editar sus preguntas si comete un error – Mchl