Depassement memoire

cs_tontonanton Messages postés 2 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 2 octobre 2007 - 2 oct. 2007 à 19:12
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 2 oct. 2007 à 20:09
Bonjour, j'utilise une classe abstraite SQL qui me sert d'acces aux données depuis n'importe quelle autre classe.
Cette classen'est jamais instanciée et toujours appelée SQL::query($requete).

Hors après un grand nombre de requete consecutives (plusieurs milliers), le système me signale un dépassement mémoire. (8M pour php.ini, ca semble quand même pas mal)
Les requetes sont des insert donc je ne consomme pas de ressources en stockant des résultats.
Le free_result() n'arrange rien.

"Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 35 bytes) in I:\sites\EN ligne\Setup Object\classes\DB_Classes\SQL.php on line 91"

Je ne comprend pas d'ou vient cette occupation mémoire alors que je ne stocke rien de volumineux.

L'appel à une classe abstraite non instanciée fait-il que le système la recharge en mémoire à chaque appel ?
Dois je la transformer en classe normal et l'utiliser via un objet global ?

Pour moi le truc c'est que je tiens a pouvoir faire des requetes depuis n'importe quel objet en une ligne: SQL->query($requete) et sans avoir a charger en code.

Merci pour les réponses !!!!!!!!

3 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
2 oct. 2007 à 19:31
Hello,

tu affiches des choses dans ton script?
La classe, stocke t elle quelque chose en mémoire ? des logs, un tableau des requêtes effectuées, etc...?
Bref, il nous faut en savoir plus, là.
On dépasse très vite les 8Mo, en fait, très facilement, crois-moi ;-)
cs_tontonanton Messages postés 2 Date d'inscription samedi 28 juin 2003 Statut Membre Dernière intervention 2 octobre 2007
2 oct. 2007 à 19:59
En fait je suis en phase de debuggage.
A chaque requete je retourne 4 ou 5 lignes de 50 octets pour indiquer que le requetage s'est bien passé.
Il est vrai que des milliers de requetes  * ces quelques lignes ca pese lourd.

Je n'avais pas pensé a cela.

Il s'avère qu'au final je générais énormément de lignes de sortie, d'autres ailleurs que dans le sql , surtout des contrôles de déroulement de script. J'ai suppprimé des contrôles et ca tourne depuis.

Merci beaucoup pour la rapidité de la réponse, suis bluffé. Malalam t'es partout sur ce site, bigre, respect !!!

merci encore !!!
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
2 oct. 2007 à 20:09
Ben je suis l'admin, j'ai intérêt à être partout ;-)
Et de rien, heureux d'avoir pàu t'aider :-)
Rejoignez-nous