pb avec allowed max size

pb avec allowed max size - PHP - Programmation

Marsh Posté le 27-06-2005 à 15:43:27    

Salut tout le monde,
 
je voudrais savoir comment on peut contourner ce probleme :  
 
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 81 bytes) in /home/XXXX/XXXX/XXXX/sylk2csv_v2.php on line 6
 
Pour info je mets un fichier de 6mo dans un tableau et c'est ca qui plante
le pb en plus c'est que c'est sur un serveur distant et que l'on a pas les droits de root pour le serveur apache.

Reply

Marsh Posté le 27-06-2005 à 15:43:27   

Reply

Marsh Posté le 27-06-2005 à 15:45:54    

Ne pas charger un tableau de 6 Mo [:spamafote] Y'a quoi dedans  pour que ça soit si lourd ?
 
Et aussi, réfléchis 2 minutes : si y'avait un moyen de contourner, à quoi servirait la limite ?

Reply

Marsh Posté le 27-06-2005 à 15:51:40    

Je sais bien le fichier est un .slk (fichier qui vient de sphinx)et quand je le fais en local il y a aucun probleme mais sur le serveur ca passe pas. (pour info je converti le fichier slk en csv pour le mettre en base) et oui il est enorme le fichier il y aura 116 champs dans ma base avec plus de 5000 ligne

Reply

Marsh Posté le 27-06-2005 à 15:52:26    

Faut pas tout charger, faut faire ligne par ligne [:spamafote], ou petit bloc par petit bloc

Reply

Marsh Posté le 27-06-2005 à 16:07:52    

Je m'en doute mais j'ai bien galerer a faire mon script pour que la conversion soit nikel et la je ne vois pas du tout comment le changer pour faire ce que tu dis si tu as une idée voivi mon code:

Code :
  1. <?php
  2. set_time_limit(0);
  3. function slk2csv($file) {
  4.    // Chargement du fichier dans un tableau
  5.    if(!$tableau = file($file)) return;
  6.    $xmax = 0;
  7.    // Pour chaque ligne
  8.    foreach($tableau as $ligne) {
  9.       // Ne commence pas par "C" ==> zappe
  10.       if(substr($ligne,0,1)!="C" ) continue;
  11.       // Si la case contient un ; (doublé en slk)
  12.       $ligne2 = str_replace(";;","ø",$ligne);
  13.       // Découpe la ligne à chaque ;
  14.       $tmp = explode(";",$ligne2);
  15.       // on lit à partir de la 2e colonne
  16.       $i = 1;
  17.       // lecture du Y éventuel
  18.       if(substr($tmp[$i],0,1)=="Y" ) {
  19.          $y = str_replace("Y","",$tmp[$i]);
  20.          $i++;
  21.       }
  22.       // lecture du X
  23.       $x = str_replace("X","",$tmp[$i]);
  24.       // mémorisation du max
  25.       $xmax = max($x,$xmax);
  26.       // lecture de la valeur
  27.       $v = ereg_replace("[K\"]","",$tmp[$i+1]);
  28.       $tab[$y][$x]="\"".trim(str_replace("ø",";",$v))."\"";
  29.    }
  30.    // ENCODAGE EN CSV
  31.    // colonnes séparées par ;
  32.    for($i=1;$i<=$y;$i++) {
  33.       // remplissage des cases vides
  34.       for($j=1;$j<=$xmax;$j++)
  35.          if(!isset($tab[$i][$j]))
  36.             $tab[$i][$j] = "";
  37.       ksort($tab[$i]);
  38.       $tab2[] = @implode(";",$tab[$i]);
  39.    }
  40.    // lignes séparées par \n
  41.    return implode("\n",$tab2);
  42. }
  43. $fichier = "Etic";
  44. // conversion du fichier slk en csv
  45. $temp = slk2csv($fichier.".slk" );
  46. // création du fichier .csv
  47. $f = fopen($fichier.".csv","w" );
  48. fputs($f,$temp);
  49. fclose($f);
  50. ?>

Reply

Marsh Posté le 27-06-2005 à 16:09:02    

Ca ressemble à quoi un slk ?

Reply

Marsh Posté le 27-06-2005 à 16:12:32    

FlorentG a écrit :

Ca ressemble à quoi un slk ?


ca ressemble a ca :
 
C;Y1;X56;K"NbAutreEquipt5"
C;Y1;X57;K"NbAutreEquipt6"
C;Y1;X58;K"NbAutreEquipt7"
C;Y1;X59;K"AccesEtabInternet"
C;Y1;X60;K"QuelTypeAcces"
C;Y1;X61;K"QuelTypeAcces2"
C;Y1;X62;K"QuelTypeAcces3"
C;Y1;X63;K"QuelTypeAcces4"
C;Y1;X64;K"QuelTypeAcces5"
C;Y1;X65;K"QuelTypeAcces10"
C;Y1;X66;K"QuelTypeAcces11"
C;Y1;X67;K"DebitInternet"
C;Y1;X68;K"SiTechnoReseauAltern"
C;Y1;X69;K"SiTechnoReseauAltern2"
C;Y1;X70;K"NbPosteInternet"
C;Y1;X71;K"SiPareFeuEtab"
C;Y1;X72;K"SiOuiFiltrageWeb"
C;Y1;X73;K"SiOuiFiltrageWeb2"
C;Y1;X74;K"SiOuiControlePosterioriEtab"
C;Y1;X75;K"SiOuiControlePosterioriEtab2"
C;Y1;X76;K"SiCharteInternet"
C;Y1;X77;K"SiOuiSiAnnexeReglmtInter"
C;Y1;X78;K"NbEnseignantB2I"
C;Y1;X79;K"NbDisciplineB2I"
C;Y1;X80;K"NbEleveAttestB2iNiv2"
 
c'est un format si tu l'ouvre sous excel ca te donne un tableur et les coordonné de chaque cellule sont representé par le Y(ligne) et le X (colonne) la valeur de la cellule est ce qui il a apres le K. Je precise au total dans le fichier slk j'ai 255045 lignes ( :ouch: ) voila la réponse a la taille du fichier


Message édité par bedomon le 27-06-2005 à 16:14:12
Reply

Marsh Posté le 27-06-2005 à 16:13:09    

Bah essaye par groupe de quelques lignes pour voir... Tu prends 50 lignes, tu convertis, tu envois, etc...

Reply

Marsh Posté le 27-06-2005 à 16:17:19    

J'ai deja essayé.
En fait j'ai une grosse contraine c'est que tout va etre automatiser de facon hebdomadaire et j'ai essayer ce que tu ma dis et j'ai pu en conclure que le fichier ne doit pas depasser 2mo.
Un autre contrainte c'est que si je decoupe le fichier je peux me retrouver avec les valeurs d'une meme ligne dans deux "tableau" different et donc je risque une perte de donné

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed