2017-05-14 7 views
0

ファイルサイズが673Kと131Kのファイルをそれぞれ解析する2つの関数があります。彼らは名前だけで同じコードを持っています。それはファイルExcelからのデータと、それは返す他の関数read 一つの機能:私は他人のファイルを持っているPHPでログファイルを作成する方法

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

はそのサイズをExcelのより、このものより大きく、その解析関数適しています。

ログファイルを作成して、システム内で行うすべての操作を登録したいのですが、どうすればいいのか分かりません。一方私は@Lawrence CheroneのためにStackOverflowで、この解決策が見つかりました: enter link description here

をしかし、問題は、私はlogfileを行います初めてです、私はそれを作成する方法がわかりませんか?私は新しいファイルを作成し、それを私のプロジェクトに入れますか?どのように私はそれをexcute、私は私の機能のエラーの理由を見ることができますか?または@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

ファイルに何かを書きたい場合は、この行を使用できます –

関連する問題