Taille maximum d'une variable


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Taille maximum d'une variable

Message le Jeu Oct 06, 2005 22:16

J'ai été confronté à un problème de taille de variables.

Je mettais en variable le résultat d'une requête SQL accompagné de divers code.
Une fois la boucle finie, j'affiche la dite variables.

J'ai été confronté à une page blanche quand la variable à dépassé un certain nombre de caractères (d'octet ?).
Quelle est cette valeur maximum ?

Pour mon problème, je l'ai résolu mais sans pour autant connaître cette valeur.


LeMulotNocturne
WRInaute impliqué
WRInaute impliqué
 
Messages: 674
Inscription: 1 Juin 2005

Message le Jeu Oct 06, 2005 22:30

oui mais en quel langage ? php ? asp ? perl ? (beurk ! :lol: )...


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Jeu Oct 06, 2005 23:18

php ; je ne savais pas que cela variat selon les langages.

zimounet
WRInaute passionné
WRInaute passionné
 
Messages: 1796
Inscription: 8 Nov 2004

Message le Jeu Oct 06, 2005 23:33

sa doit se définir dans ton php.ini a mon avis


dixenet
WRInaute discret
WRInaute discret
 
Messages: 163
Inscription: 7 Déc 2004

Message le Ven Oct 07, 2005 11:56

oui mais dit moi n'as tu pas moyen d'eviter un tel stockage d'information.

Ne te serais t'il pas plus simple de faire des affichages à la volée.

à mon avis ton code doit etre optimisable. car je fais du PHP de facon intensive et j'ai jamais eu ce type de pb.


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Ven Oct 07, 2005 12:21

tu parles de centaines de milliers de caracteres pour ta variable ? moi personnelement je n'ai jamais atteint de limites :) et je vois pas pourquoi il y aurai une page blanche, au pire la valeur serai tronquée

TotoZeRigolo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 39
Inscription: 26 Sep 2005

Message le Ven Oct 07, 2005 13:29

théoriquement, la limite est la limite de m'émoire utilisée par PHP (soit 8 Mo par défaut)
Une variable de 8Mo, ca fait un peu beaucoup ...
En plus, si il y a une page blanche, c'est pas sur que le problème vienne de là !!!!


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Message le Ven Oct 07, 2005 13:34

(soit 8 Mo par défaut)

mon mutu est à 12 :)


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Ven Oct 07, 2005 15:47

dixenet a écrit:oui mais dit moi n'as tu pas moyen d'eviter un tel stockage d'information.

Ne te serais t'il pas plus simple de faire des affichages à la volée.

à mon avis ton code doit etre optimisable. car je fais du PHP de facon intensive et j'ai jamais eu ce type de pb.


Justement je l'ai modifié en conséquence.


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Ven Oct 07, 2005 15:48

e-kiwi a écrit:tu parles de centaines de milliers de caracteres pour ta variable ? moi personnelement je n'ai jamais atteint de limites :) et je vois pas pourquoi il y aurai une page blanche, au pire la valeur serai tronquée


C'est ce qui m'a aussi étonné... mais pourtant c'et la seule explication que j'y vois.

zimounet
WRInaute passionné
WRInaute passionné
 
Messages: 1796
Inscription: 8 Nov 2004

Message le Ven Oct 07, 2005 16:46

De toute facon, la mémoire de php (fixé a 8 mo apparement, je n'était pas sure du chiffre) peut se configurer dans la config de php!
Enfin il faut avoir un dédié tout de meme...

Mais 8 mo de caractères, c'est énorme quand meme!

Si tu es en mutualisé, regarde le phpinfo...


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Ven Oct 07, 2005 19:14

Je n'ai pas accès à l'info dans le phpinfo().

Mais effectivement, je suis en mutualisé, et la limite apparente est très faible... largement inférieure à 1 Mo.

La page concernée faisait (en totalité donc pas le contenu de la variable) moins de 60 Ko.

Après plusieurs test, je me suis aperçu que le problème venait bien de là.

Je récupérais des infos d'une base de donnée et les insérait dans une variable avec du code html (mon glossaire).
Je passais le contenu complet de la variables sous 2 fonctions chargée de créer les liens vers les définitions, etc.

J'ai contourné le problème en appelant les fonctions concernées dans le while et affichage à la volée.
Ce qui me gêne, c'est que cette méthode prend plus de ressource forcément.

Voici la portion de code concernée que j'ai modifié :
Code: Tout sélectionner
echo '<dl>';
         while   ($sql = mysql_fetch_assoc($res_gloss) ) { // traitement du résultat
               if      ($sql['def_nom_acro'] == NULL) {
                     $terme = ucfirst($sql['def_nom']);
                     $terme = strtr($terme[0], 'é', 'É');
                     $terme .= substr($sql['def_nom'], 1);
                     }
               else   {
                     $terme = $sql['def_nom'].' '.$sql['def_nom_acro'];
                     }
               
               if      ($sql['def_texte'] == NULL) {
                     $define = 'La défintion de ce terme est en cours d\'édition.';
                     }
               else   {
                     $define = $sql['def_texte'];
                     }
               
               if      ($sql['def_wikipedia'] == NULL) {
                     $wiki = $sql['def_nom'];
                     }
               else   {
                     $wiki = $sql['def_wikipedia'];
                     }
                              
               $chaine = '<dt><strong>'.$terme.'</strong></dt>';
               $chaine .= '<dd>';
               $chaine .= '<p>'.$define.'</p>';
               
               if   ($sql['def_texte'] != NULL) {
                  $chaine .= '<p>Source : <a href="http://fr.wikipedia.org" title="Encyclopédie Wikipédia (nouvelle fenêtre)" '.LIEN_EXT.'>Wikipédia</a> - <a href="http://fr.wikipedia.org/wiki/'.$wiki.'" title="(nouvelle fenêtre)" '.LIEN_EXT.'>'.$sql['def_nom'].'</a> - <a href="http://fr.wikipedia.org/w/index.php?title='.$wiki.'&action=history" title="(nouvelle fenêtre)" '.LIEN_EXT.'>Auteur(s)</a> - Cet article est sous licence <a href="http://www.gnu.org/copyleft/fdl.html" title="(nouvelle fenêtre)" '.LIEN_EXT.'>GFDL</a></p>';
                  }
               $chaine .= RETOUR;
               $chaine .= '</dd>';
               
               $chaine = traiteCode($chaine);
               if   (eregi('<acron>', $chaine) || eregi('<define>', $chaine) ) { // si le contenu contient une de ces balises
                  $chaine = traiteBalise($chaine, 'lien');
                  }
                  echo $chaine;
               }
         mysql_free_result($res_glossaire);
         echo '</dl>';


Avant j'appelais les fonctions juste une fois à la fin du while.

zimounet
WRInaute passionné
WRInaute passionné
 
Messages: 1796
Inscription: 8 Nov 2004

Message le Ven Oct 07, 2005 19:38

Tu est chez quel hébergeur?


medium69
WRInaute passionné
WRInaute passionné
 
Messages: 2485
Inscription: 7 Mai 2005

Message le Ven Oct 07, 2005 19:49

OVH


dixenet
WRInaute discret
WRInaute discret
 
Messages: 163
Inscription: 7 Déc 2004

Message le Ven Oct 07, 2005 22:56

tu sais le fais de stocker les données dans les varaibles prends bien plus de ressources que de les affichés a la volée. puisque tu affiche toujours le mme nombre de caractere mais que tu stock en plus tes varaibles dans la memoire.

enfin bon, moi je simplifierais encore plus ton script. tu stock des données dans les variables sans utilité tu pourrais les afficher direct ca accelererais le traitement de ton script et ca eviterais tes pb de varaible trop grande.

Taille maximum d'une variable

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités