Ce face gc_disable
Unele programe care creează foarte multe obiecte (de exemplu Composer, la instalare) opresc colectorul ca să câștige viteză, pentru că știu că vor termina repede. Cu colectorul oprit, referințele circulare nu se eliberează automat, dar gc_collect_cycles() le poate elibera manual în continuare.
Ce returnează
Nimic.
Exemple
Exemplul 1: Colectare manuală cu colectorul oprit
<?php
gc_disable();
for ($i = 0; $i < 1000; $i++) {
$a = new stdClass();
$a->eu = $a;
}
unset($a);
echo "Rulări automate: " . gc_status()["runs"] . "\n";
echo "Eliberate manual: " . gc_collect_cycles();
Rezultat
Rulări automate: 0
Eliberate manual: 1000
Greșeli frecvente
- Oprești colectorul într-o aplicație web „pentru viteză”. Câștigul este de obicei neglijabil, iar riscul de consum mare de memorie este real.
Comenzi înrudite
gc_enable: Pornește colectorul de referințe circulare (dacă a fost oprit).gc_enabled: Verifică dacă colectorul de referințe circulare este pornit.gc_collect_cycles: Pornește imediat colectorul de referințe circulare și returnează câte valori a eliberat.