2009-02-01 7 views
1

J'ai ma propre classe d'objets de données php qui enveloppe la bibliothèque mysqli. Il fonctionne très bien avec la plupart des types de données, y compris le texte. Dès que je change une colonne de table de texte en texte moyen, j'obtiens l'erreur décrite dans le titre de cette question. J'ai testé mes scripts php sur plusieurs environnements d'hébergement partagés, et je n'ai cette erreur que sur l'un d'entre eux.Mysql MediumText provoque PHP Erreur fatale: Taille de la mémoire autorisée de 8388608 octets épuisés

Est-ce que le MediumText et LongText utilisent vraiment autant de mémoire?

Je vais commencer à optimiser mes cours de php, mais je veux vous assurer que je suis sur la bonne voie ..

Répondre

2

Les champs mediumtext et longtext pourraient contenir potentiellement autant d'informations. Est-ce que vous changez simplement le type de colonne, ou changez-vous le type de colonne en le bloquant plein de texte? Si c'est le premier, je suppose qu'il y a une boucle/récursion qui génère un tas d'objets/tableaux/somethings et que vous atteignez le plafond de mémoire par défaut de PHP.

Vous pouvez contrôler la quantité de mémoire allouée à PHP via php.ini, ou vous pouvez utiliser la fonction ini_set pour définir les valeurs lors de l'exécution.

ini_set("memory_limit","12M"); 
+0

merci, je l'ai mis à 20M et tout a bien fonctionné! J'ai été surpris l'hébergement partagé me permettrait de demander plus de mémoire comme ça .... Je suppose qu'il y a une limite à la quantité de mémoire que je peux faire sortir de ini_set()? – John

+0

La plupart des hébergeurs partagés sont gérés par une cabale de marketeurs et/ou hommes d'affaires qui ne connaissent pas, ou se soucient beaucoup des détails techniques (ce qui explique pourquoi il est si peu fiable). Les hôtes partagés bien exécutés auront des moniteurs en place qui tueront et traiteront ce qui commence à consommer trop de mémoire. –

+0

memory_limit lui-même devrait être, en théorie, limité uniquement à la mémoire actuellement disponible sur la boîte. –

1

Cet hébergeur a probablement PHP configuré pour permettre seulement un script 8 mégaoctets de mémoire.

memory_limit = 8M ; Maximum amount of memory a script may consume

Vous pouvez vérifier ce que ce paramètre est réglé à l'aide de la fonction phpinfo(), créez un script avec ce qui suit, le télécharger et pointez votre navigateur web à elle (assurez-vous d'enlever une fois fait, car il donne suite potentiellement sensibles informations):

<?php

phpinfo()

?>

Recherchez "memory_limit" vers le bas. S'il est défini sur 8 mégaoctets, c'est votre problème.

Questions connexes