Yii2:处理Excel包含90k行时PHPExcel错误

我有一个应用程序已经上传Excel文件的过程。 然后PHPExcel将处理上传的Excel文件。

这是stream程的stream程:

上传文件 – >将文件保存到本地目录 – >从本地目录获取文件 – >使用PHPExcel读取文件

我已经成功地将excel文件保存到本地目录,读取并从Excel文件中获取数据。

但是,当我使用包含90行x 25列的Excel文件时,该文件未保存到本地目录中。 然后我试图print_r的数据,它返回error=> 1

这是print_r的结果

1.小于8k行的Excel成功保存到本地目录中: 在这里输入图像说明

2.行数为90K的Excel并没有保存到本地目录中: 在这里输入图像说明

这是我在控制器中的代码

 public function actionCreate() { $connection = \Yii::$app->db; $model = new MasterProduct(); $userId = Yii::$app->user->id; $date = new DateTime('now', new \DateTimeZone('Asia/Bali')); $created_at = $date->format('Y:m:d H:i:s'); $dirTrash = Yii::getAlias('@webroot/trash'); $dirSubTrash = Yii::getAlias('@webroot/trash/trash_app'); //create directory in local if doesn't exist if (!is_dir($dirTrash)) { mkdir(Yii::getAlias('@webroot/trash')); if (!is_dir($dirSubTrash)) { mkdir(Yii::getAlias('@webroot/trash/trash_app')); } } else { if (!is_dir($dirSubTrash)) { mkdir(Yii::getAlias('@webroot/trash/trash_app')); } } if (Yii::$app->request->post()) { Yii::$app->response->format = Response::FORMAT_JSON; $result = []; $fileMaster = UploadedFile::getInstancesByName('master_product'); $middleName = substr(md5(microtime() * 100000), rand(0, 9), 5); //named the uploaded file, then save into local directory if ($fileMaster !== null) { $nameMaster = $userId . '_MP' . '_' . $middleName . '_' . date('Ym-d') . '_' . $fileMaster[0]->getBaseName() . "." . $fileMaster[0]->getExtension(); $pathMaster = Yii::getAlias('@webroot/trash/trash_app/') . $nameMaster; $fileMaster[0]->saveAs($pathMaster); } else { $error[] = "Choose the" . "<strong>" . " Excel " . "</strong>" . "file first."; $result = [ 'error' => $error ]; } //this the code i've used to print_out the array in above images echo '<pre>'; print_r($fileMaster); die(); //Access, and get the data from local directory $objPHPExcelMaster = new \PHPExcel(); $fileNameMaster = Yii::getAlias('@webroot/trash/trash_app/') . $nameMaster; $inputFilesMaster = fopen(Yii::getAlias('@webroot/trash/trash_app/') . $nameMaster, "r"); try { $inputFileTypeMaster = \PHPExcel_IOFactory::identify($fileNameMaster); $objReaderMaster = \PHPExcel_IOFactory::createReader($inputFileTypeMaster); $objPHPExcelMaster = $objReaderMaster->load($fileNameMaster); } catch (Exception $ex) { die('Error'); } $sheetMaster = $objPHPExcelMaster->getSheet(0); $highestRowMaster = $sheetMaster->getHighestDataRow(); $highestColumnMaster = $sheetMaster->getHighestDataColumn(); //read the Excel file and set into array for ($row = 1; $row <= $highestRowMaster; ++$row) { $rowDataMaster = $sheetMaster->rangeToArray('A' . $row . ':' . $highestColumnMaster . $row, NULL, TRUE, NULL); } $tempDataMaster = mysql_escape_string(json_encode($rowDataMaster)); $commandCheckExist = "SELECT COUNT(user_id) FROM `gm_json_master` WHERE id=$userId"; $queryCheckExist = Yii::$app->db->createCommand($commandCheckExist)->execute(); //save data into db if ($queryCheckExist == 0) { $command_2 = "INSERT INTO json_master(json_m_product) VALUES('$tempDataMaster')"; $query_2 = Yii::$app->db->createCommand($command_2)->execute(); } else { $commandUpdate = "UPDATE json_master SET json_m_product='$tempDataMaster'"; $queryUpdate = Yii::$app->db->createCommand($commandUpdate)->execute(); } $result = [ 'url' => Url::to(['/gm/json-master-product/save']) ]; return $result; } else { return $this->render('create', [ 'model' => $model, ]); } } 

这是怎么发生的? 以及如何使用PHPExcel读取Excel的大数据?

任何帮助将不胜感激。 谢谢

错误代码1意味着文件大小超过服务器configuration允许的最大文件大小。

从文档 :

UPLOAD_ERR_INI_SIZE值:1; 上传的文件超过了php.ini中的upload_max_filesize指令。

我会尝试提高限制以及最大POST大小限制,看看是否有帮助。