2017-05-14 2 views
0

파일 크기가 각각 673K와 131K 인 Excel 파일을 각각 구문 분석하는 두 가지 함수가 있습니다. 그들은 단지 그들의 이름과 같은 코드를 가지고있다. 한 기능은 파일 엑셀에서 데이터를 읽고 다른 함수는 반환 :PHP에서 로그 파일을 만드는 방법

Fatal Error: Allowed Memory Size of 134217728 Bytes Exhausted (Tried to allow 72 bytes) 

내가 다른 파일도이 것보다 더 큰 자신의 크기와 자신의 구문 분석 기능을 작동합니다 엑셀 있습니다.

시스템 내부에서 수행하는 모든 작업을 등록하기 위해 로그 파일을 만들고 싶지만 어떻게해야하는지 잘 모릅니다. 반면에 나는 @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; 
    } 

답변

0
error_log("You messed up!".$my_message, 3, "/var/tmp/custom-errors.log"); 
+0

: 나는 그것을 디버깅이 로그 파일을 생성하는 방법을 내 기능의 내 작은 코드 이 다음, 당신은 나를 인도 할 수 있습니까? 및 "/var/tmp/custom-errors.log"는 로그 파일의 액세스 경로입니까? – Nazly

+0

파일에 무언가를 쓰고 싶다면이 줄을 사용할 수 있습니다. –

관련 문제