如何在 PHP 中创建日志文件
How to create a log file in PHP
我有 2 个函数来解析每个文件 Excel 它们的大小分别为 673K 和 131K。他们有相同的代码只是他们的名字。
一个函数从文件 Excel 读取数据,另一个函数 return:
Fatal Error: Allowed Memory Size of 134217728 Bytes Exhausted (Tried to allow 72 bytes)
我还有其他文件 Excel 它们的大小比这个更大,而且它们的解析功能运行良好。
我想创建一个日志文件来记录他们在系统内所做的每一个操作,但我不知道该怎么做。另一方面,我在 Whosebug 中为@Lawrence Cherone 找到了这个解决方案:
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;
}
error_log("You messed up!".$my_message, 3, "/var/tmp/custom-errors.log");
我有 2 个函数来解析每个文件 Excel 它们的大小分别为 673K 和 131K。他们有相同的代码只是他们的名字。 一个函数从文件 Excel 读取数据,另一个函数 return:
Fatal Error: Allowed Memory Size of 134217728 Bytes Exhausted (Tried to allow 72 bytes)
我还有其他文件 Excel 它们的大小比这个更大,而且它们的解析功能运行良好。
我想创建一个日志文件来记录他们在系统内所做的每一个操作,但我不知道该怎么做。另一方面,我在 Whosebug 中为@Lawrence Cherone 找到了这个解决方案: 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;
}
error_log("You messed up!".$my_message, 3, "/var/tmp/custom-errors.log");