0
我有兩個函數來解析每個文件的Excel,它們的大小是673K和131K。他們有相同的代碼,只是他們的名字。 一個功能它從文件中讀取Excel中的數據和其他功能,它返回:如何在PHP中創建一個日誌文件
Fatal Error: Allowed Memory Size of 134217728 Bytes Exhausted (Tried to allow 72 bytes)
我也有其它文件Excel的它們的大小比這更多的人更大的解析函數效果很好。
我想創建一個日誌文件來註冊他們在系統內部做的每一個動作,但我不知道該怎麼做。在另一方面,我發現了@Lawrence Cherone在此#1解決方法: enter link description here
但問題是第一次我會做一個logfile
,我不知道我是怎麼創造的呢?我創建了一個新文件,並將其放入我的項目中?我如何執行它,以及如何查看函數中錯誤的原因?或者當我遇到類似@Lawrence Cherone提出的解決方案的錯誤時,我將該文件放入函數中? 這個解決方案似乎工作正常,問題已解決。 這下面是我的我的函數的小代碼,可以引導我如何創建此日誌文件進行調試:
public function parseEquipment($filePath = null) {
set_time_limit(0);
$listEquipement = [];
$count = 0;
$chunkSize = 1024;
$objReader = PHPExcel_IOFactory::createReader(PHPExcel_IOFactory::identify($filePath));
$spreadsheetInfo = $objReader->listWorksheetInfo($filePath);
$chunkFilter = new \Floose\Parse\ChunkReadFilter();
$objReader->setReadFilter($chunkFilter);
$objReader->setReadDataOnly(true);
$chunkFilter->setRows(0, 1);
$objPHPExcel = $objReader->load($filePath);
$totalRows = $spreadsheetInfo[0]['totalRows'];
for ($startRow = 1; $startRow <= $totalRows; $startRow += $chunkSize) {
$chunkFilter->setRows($startRow, $chunkSize);
$objPHPExcel = $objReader->load($filePath);
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null, null, true, false);
$startIndex = ($startRow == 1) ? $startRow : $startRow - 1;
if (!empty($sheetData) && $startRow < $totalRows) {
$dataToAnalyse = array_slice($sheetData, $startIndex, $chunkSize);
//echo 'test1';
if($dataToAnalyse[1][0]==NULL){
//echo 'test2';
break;
}
//echo 'test3';
//var_dump($sheetData);
for ($i = 0; $i < $chunkSize; $i++) {
if ($dataToAnalyse[$i]['0'] != NULL) {
//echo 'OK';
$listEquipement[] = new Article($dataToAnalyse[$i]['3'], $dataToAnalyse[$i]['4'], $dataToAnalyse[$i]['2']);
// echo 'test4';
$count++;
}
}
}
$objPHPExcel->disconnectWorksheets();
unset($objPHPExcel, $sheetData);
}
//var_dump(array_slice($sheetData, $startIndex, $chunkSize););
return $listEquipement;
}
我在哪裏,就把這行的,而不是「回聲」?和「/var/tmp/custom-errors.log」是日誌文件的訪問路徑? – Nazly
要在文件中寫入內容的位置,可以使用此行 –