[RESOLU] probleme de php.ini

Eléphant du PHP | 111 Messages

23 avr. 2021, 16:31

Bonjour,

j'ai cette erreur :
Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 4096 bytes) in /home/XXXXXXXXXX/vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Worksheet/Worksheet.php on line 1262

d'après ce que j'ai lu il faut que j’augmente la taille limite de la mémoire
soit en modifiant le php.ini soit directement dans le script
ini_set('memory_limit', '128M')
le fichier php.ini sur mon hebergeur OVH n'existes pas ou n'est pas modifiable, il faut passer par un .user.ini mais au vu des forums ce serait plus une erreur quand ça fonctionne que le contraire et donc ça n'a pas l'air de fonctionner.

Mon problème, car en fait tout vient de là peut être, c'est que j'essaie de convertir un fichier csv de 64Mo et le mettre dans des variables via phpspreadsheet. j'aimerai faire un script qui analyse ce fichier d'erreur y applique des filtres et me retourne les erreurs trouvées. Je l'ai fait sans problème en vba sur excel, mais j'aimerai donner la possibilité d'uploader le fichier et de voir si le serveur pouvait faire le boulot tout seul dans son coin et nous retourner le fichier avec les erreurs mises en évidences.

Et donc j'en suis à l'étape : lire le fichier reçu,

Eléphant du PHP | 111 Messages

23 avr. 2021, 18:24

En fait j'ai trouvé un autre moyen de faire ce que je voulais.
Il ne me reste plus qu'a marquer comme résolu et ouvrir un autre sujet
 <?php

$log = fopen('./UP/logfile.txt', 'rb');

$i=1;
while(!feof($log)){
	$TabLog[$i] = fgets($log);
    $i++;
}
echo '<pre>'; echo print_r($TabLog); echo'</pre>';

Eléphant du PHP | 111 Messages

23 avr. 2021, 20:49

Et mince ce n'est pas si résolu que ça finalement

Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 23072768 bytes) in /XXXXXXXXXXXXXX/Logs/importe5.php on line 23

Je retombe sur cette limite qui a priori ne peut pas être modifié sur OVH
 <?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
$log = fopen('./UP/logfile.txt', 'rb');

$i=1;
while(!feof($log)){
	$TabLog[$i] = fgets($log);
    $i++;
}

$Mots = fopen('./UP/MotsClefsVivid.txt', 'rb');
$i=1;
while(!feof($Mots)){
	$MotsClefsVivid[$i] = fgets($Mots);
    $i++;
}

$taille = sizeof($TabLog);
for($i=1;$i<$taille;$i++){
	$cherche[$i][]=explode(';',$TabLog[$i]);
}
echo'<pre>';print_r($cherche);echo'</pre>';

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 avr. 2021, 08:30

Tu as trop de données à traiter...
Donc soit tu augmentes le memory_limit (en changeant d'hébergement par exemple si ton actuel ne le permet pas), soit tu optimises ton code pour ne pas charger tout ton fichier en mémoire mais pour le lire et faire le traitement ligne par ligne (une ligne à la fois)
Là dans ton code à chaque fois tu charges le fichier en entier et ça bloque.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 111 Messages

25 avr. 2021, 08:44

Yes, je vais tenter d'analyser ligne par ligne et de n'afficher que les résultats après merci !!