|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() Inscription : décembre 2003 Messages : 222 ![]() |
J'ai un script qui utilise un objet dans lequel j'ai encapsulé des accès Mysql (genre PDO mais perso)
je charge une table Oracle via ODBC (là , ce n'est pas encapsulé) puis crée une occurence d'un objet que je cree chaque fois que j'ai une ligne à créer (ou à modifier mais l'objet se débrouille).. Et là, je vois la mémoire d'un des deux process Apache augmenter jusqu'à des valeurs extrêmes (500Mo) sans que je comprenne ce qui se passe ! Et en fin de boucle, j'ai beau ajouter un unset de l'occurence créee, cela ne change rien .... Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : janvier 2004 Messages : 242 ![]() |
Tu fais un unset sur un object, sauf qu'un unset ça désaloue juste le pointeur, donc en fait, tu rends disponible ta variable, et l'objet reste en mémoire.
Mais normalement tout les objets sont détruits en quittant le script. Donc réutilise le même object du début a la fin sans en créer un nouveau a chaque passage. |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : mai 2006 Messages : 1 294 ![]() |
ou tu dois utiliser le destructeur de ta classe ... ce que je trouve + propre .
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : décembre 2003 Messages : 222 ![]() |
Moi aussi, je trouve un __destruct plus propre ...
mais j'osais pas ! ou plutot je pensais qu'un unset faisait la même chose Je vais essayer cela ... Merci d'avance |
|
|
00
|
|
|
#5 | ||
|
Membre habitué
![]() Inscription : décembre 2003 Messages : 222 ![]() |
1- J'ajoute un __destruct comme indiqué :
erreur car mon objet n'a pas de destructeur explicite 2- Création d'un destructeur vide .... Rien ne change par rapport à la croissance mémoire et finalement je viens me planter sur une erreur encore plus bizarre Code :
3 - Autre solution suggérée, Ben, mon objet, persistant je le rappelle, s'identifie par ses attributs à la création. Donc il ne peut être utilisé dans la boucle facilement ... C'est pas évident ... |
||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : mai 2006 Messages : 1 294 ![]() |
tu pourrais envoyer le script php et indiquer ta version exact de PHP pour que je fasse des tests ?
vu la gueule de l'erreur : -tu dois utiliser un systeme perso de gestion des exceptions qui rentre en conflit avec -ou le code dans le destructeur fait une chose qu'il ne doit pas faire |
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : décembre 2003 Messages : 222 ![]() |
J'utilise le script d'import initial de classe initiale (dans le post initial),
qui appelle une classe nommée Piece cette Pièce est abstraite d'une classe nommée Conception qui contient tous les controles spécifiques au module (regroupement fonctionnel) cette même classe fait appel à une autre classe astraite nommmé Persistante qui est donc mon PDO perso. En fait, cette classe contient l'ensemble des méthodes qui accèdent à une table Mysql , table dont les champs sont les attributs de la classe Pièce... Je vais réécrire un truc du même genre (mais plus court) pour le soumettre à votre sagacité ... Mais il faut compter le week-end, car la semaine, je bosse pour mon employeur Ah, l'erreur relevée dans un post précédent n'a rien à voir, ça a planté car un tableau était vide dans un cas . Une fois cette erreur corrigée, cela continue de monter en mémoire ..... 700Mo à ce jour ... difficile de trouver un jeu d'essai qui va plus loin ... mais il ne faut pas être pressé ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com