Bonne nouvelle PHP5.3 ne souffre pas de la maladie d'Alzheimer
Plus sérieusement je n'arrive pas à libérer la mémoire d'objets créés dans un tableau.
Je joins ci-contre un exemple de code avec un tableau contenant des objets créés dynamiquement. Je n'arrive pas à récupérer la place mémoire occupée par les objets ( unset, $mavar=null ...).
Dans la réalité j'emploie un code similaire dans un projet Symfony2 avec Doctrine pour mettre à jour une table à partir d'un fichier texte (100.000 lignes et plus ...). Le script PHP consomme toute la mémoire et échoue lamentablement.
Merci infiniment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <?php class Objet { public $champs; public function __construct($init) { $champs = $init; } } echo 'memoire initiale->' . memory_get_usage(true) . '<br/>'; $tablo = array(); for ($x = 0; $x < 1000; $x++) { $tablo[$x] = new Objet(str_repeat("Hello", 10000)); } echo 'memoire après création tableau->' . memory_get_usage(true) . '<br/>'; for ($x = 0; $x < 1000; $x++) { $mavar = $tablo[$x]; $mavar = null; unset ($mavar); $tablo[$x] = null; unset($tablo[$x]); } $tablo = array(); echo 'memoire après libération->' . memory_get_usage(true) . '<br/>'; ?>
Partager