Durante la deallocazione dell'istruzione, il valore di ritorno di pg_query
indica successo o meno, come per qualsiasi "dichiarazione di utilità". In caso di errore dovrebbe restituire false. Ad esempio:
if (!pg_query($cnx, "deallocate foobar")) {
echo "Error deallocate: " . pg_last_error($cnx);
}
else {
echo "deallocate successful";
}
Viene visualizzato:
Nota che il nome dell'istruzione da deallocare non deve essere racchiuso tra virgolette singole, perché è un identificatore, non una stringa letterale. Se deve essere racchiuso a causa di caratteri problematici, può essere fatto con pg_escape_identifier
(php>
=5.4.4)
Per ripulire una sessione, non è nemmeno necessario scorrere le istruzioni preparate e deallocarle una per una, puoi chiamare DEALLOCATE ALL
invece, sempre con pg_query
.
C'è anche un'altra istruzione che fa più pulizia in una query:DISCARD ALL
Inoltre, nulla di tutto ciò è nemmeno necessario se lo script si disconnette davvero da postgres, poiché le istruzioni preparate sono locali nella loro sessione genitore e muoiono con essa.
La pulizia esplicita è necessaria quando si utilizza il riutilizzo della connessione tra script, sia con connessioni persistenti tramite PHP (pg_pconnect
) o un pool di connessioni come pgBouncer
(sebbene il pooler stesso possa chiamare DISCARD ALL
a seconda della sua configurazione).