[disclaimer]j'avais pas suivi le lien fourni par MyHotel, mais en fait je raconte la même chose que ce qu'ils disent là-bas. Par contre je ne suis pas d'accord sur le fait que c'est "un point de détail" même si ça ne concerne que des scripts un peu particuliers comme il est facile de s'en prémunir autant le faire [/disclaimer]
Tout ce qu'il faut, c'est éviter les références croisées, et tu n'auras pas de problème.
En revanche, il faut faire bien attention de ne pas croire que ce type de code peut fonctionner ad vitam aeternam :
Car justement avec les références croisées ça n'est plus vrai :Tout ce qu'il faut, c'est éviter les références croisées, et tu n'auras pas de problème.
En revanche, il faut faire bien attention de ne pas croire que ce type de code peut fonctionner ad vitam aeternam :
Code PHP :
<?php
while (true) {
$variable = ...;
unset($variable);
}
Code PHP :
<?php
class A {
public $b;
}
class B {
public $a;
}
while (true) {
$a = new A();
$b = new B();
$a->b = $b;
$b->a = $a;
unset($a, $b); // on croit qu'on a libéré la mémoire, mais non !
// $a->b et $b->a sont perdus dans la nature, le garbage collector les a perdus, et la mémoire ne sera jamais libéré
} // "Fatal Error : Allowed memory size ..." garanti !