Taille maximum d'une variable

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.
 
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.
 
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
 
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à !!!!
 
dixenet a dit:
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.
 
e-kiwi a dit:
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.
 
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...
 
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:
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.
 
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.
 
dixenet a dit:
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.

J'y avais pas pensé :oops:
 
pas grave. ca arrive. en regle générale en plus, si tu fait des affichages à la volée et que tu mets intelligement des balises PHP tu peut editer ton design facile avec dreamweaver en module Code et en module Création. Ca peut etre utile des fois
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut