gc_disable în PHP

Oprește colectorul automat de referințe circulare.

Sintaxă
gc_disable(): void

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.