Se utilizzo una struttura ad albero di nodi simile al seguente, devo preoccuparmi del riferimento circolare?
Ho letto che PHP utilizza un meccanismo di allocazione della memoria che può rendere la vita molto difficile per il garbage collector quando ci sono riferimenti circolari coinvolti.Qual è la scala del problema di riferimento circolare di PHP e dovrei preoccuparmene?
Quello che voglio sapere è:
- Se il mio albero è costituito da pochi nodi, diciamo 25, è un problema?
- La memoria verrà liberata alla fine dello script o sto lentamente creando un problema per il server?
- In quali circostanze questo problema avrà un effetto durante l'esecuzione dello script?
- Distruggerà manualmente i riferimenti per risolvere il problema e dovrei farlo sempre?
class Node {
private $parent;
private $children;
function addChild(Node $child) {
$this->children[] = $child;
$child->setParent($this);
}
function setParent($parent) {
$this->parent = $parent;
}
}
//eg
$node0 = new Node;
$node1 = new Node;
// nodes 1 and 2 have a circular reference to each other
$node0->addChild($node1);
Penso che questo dovrebbe andare bene. AFAIK, questo è il modo in cui funziona l'implementazione del DOM PHP. –