J'ai 2 fonctions PHP pour parser chacune un fichier Excel de tailles 673K et 131K. Elles ont le même code que leurs nom bien sûr. Une fonction lit les données du fichier et l'autre non et lorsque je l'ai debuguée par des simples messages echo elle renvoie une erreur:
Je voudrais faire un fichier log pour enregistrer et voir chaque action dans le système mais le problème est que la première fois je vais le créer, je connais pas comment je le crée ? Où je dois le mettre, dans la fonction où j'ai le problème où dans le dossier de projet ? et Comment je l'exécute ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Fatal Error: Allowed Memory Size of 134217728 Bytes Exhausted (Tried to allow 72 bytes)
J'ai cherché sur internet j'ai trouvé une solution, est d'écrire ce script et de le mettre dans la fonction qui contient le problème:
Auriez-vous la gentillesse de me dire comment je crée un fichier log dans PHP et comment je l’exécute ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $log = "User: ".$_SERVER['REMOTE_ADDR'].' - '.date("F j, Y, g:i a").PHP_EOL. "Attempt: ".($result[0]['success']=='1'?'Success':'Failed').PHP_EOL. "User: ".$username.PHP_EOL. "Pass: ".$password.PHP_EOL. "-------------------------".PHP_EOL; //Save string to log, use FILE_APPEND to append. file_put_contents('./log_'.date("j.n.Y").'.txt', $log, FILE_APPEND);
Ma fonction est la suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 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; }
Partager