La documentazione PHP hanno da dire su pg_free_result()
:È necessario pg_free_result(), anche se il risultato non rientra nell'ambito?
Questa funzione deve essere richiamata solo se il consumo di memoria durante edizione esecuzione è un problema. In caso contrario, la memoria di tutti i risultati sarà liberata automaticamente allo al termine dello script.
http://www.php.net/manual/en/function.pg-free-result.php
avrei (forse ingenuamente) aspettato la risorsa restituito da una chiamata a pg_query()
essere garbage collection quando va fuori di portata.
In una funzione ipotetica come questo:
function selectSomething()
{
$res = pg_query("SELECT blah FROM sometable");
// do something with $res
pg_free_result($res); // required or not?
}
E 'davvero necessario chiamare pg_free_result()
alla fine?
In altre parole, se chiamo questa funzione 1000 volte, mangerà memoria per memorizzare tutti i 1000 risultati?
MODIFICA: sto parlando del caso tipico, ovvero pg_connect()
anziché pg_pconnect()
.
Depends, stai forzando una nuova connessione pg o la connessione è persistente? Se stai usando una connessione persistente, [la risorsa potrebbe non essere GC] (http://www.php.net/manual/en/language.types.resource.php). Ma perché non delineare la sceneggiatura.Scrivi una piccola prova e controlla l'utilizzo della memoria. Se continua ad aumentare fino alla fine dello script, aggiungi 'pg_free_result', ed eseguilo di nuovo ... –
Questa è più una domanda generale, indipendentemente dal tipo di connessione. So che potrei semplicemente scrivere un test, ma mi dà fastidio che la documentazione sia così vaga. Un test una tantum risponderà alla mia domanda solo per una piattaforma e una versione specifica (PHP e/o libpq). – Zilk
In realtà, hai un buon punto lì. Ho modificato la domanda dichiarando che sto parlando di 'pg_connect()'. – Zilk