Apache me remplit la mémoire !
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
function AjoutPiece($reference,$Indice,$Designation) {
$UnePiece = new Piece($Reference);
if ($UnePiece->Erreur <> "") {
$Message .= $UnePiece->Erreur."<br>";
} else {
$UnePiece->Enregistrer();
if ($UnePiece->Erreur <> "") {
$Message .= $UnePiece->Erreur."<br>";
} else {
$UnePiece->Attribuer("Indice",$Indice);
if ($UnePiece->Erreur <> "") $Message .= $UnePiece->Erreur."<br>";
$UnePiece->Attribuer("Designation",$Designation);
if ($UnePiece->Erreur <> "") $Message .= $UnePiece->Erreur."<br>";
}
}
unset($UnePiece);
}
....
while (odbc_fetch_into($Prepare,$Lignes)) {
$Reference = $Lignes[0];
$Indice = $Lignes[1];
$Designation = $Lignes[2];
$Message = AjoutPiece($Reference,$Indice,$Designation);
if ($Message <> "") {
fputs ($Canal,$Message."\n");
}
$Compteur = $Compteur + 1;
}
.... |
Difficile de comprendre ce qui se passe
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 :P
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é !