2012-01-25 21 views
5

Qual è l'importanza di utilizzare:PHP ::: istruzioni preparate ::: freeresult() ::: close()

$stmt->free_result(); 
$stmt->close(); 

Dopo una chiamata al database utilizzando statments preparati in questo modo:

$mysqli=new mysqli("database", "db", "pass", "user"); 

$stmt = $mysqli->prepare("SELECT email FROM users WHERE id=? "); 
$stmt->bind_param('i',$_SESSION['id']); 
$stmt->execute(); 
$stmt->bind_result($email); 
while($stmt->fetch()){ 
    echo $email; 
} 
$stmt->free_result(); //why do i need this? 
$stmt->close();  //why do i need this? 

Mi sto chiedendo perché non vedo alcun degrado delle prestazioni apprezzabile senza di loro. Sono quei comandi di solito utilizzati solo per quando devo conservare il risultato usando:

$stmt->store_result(); 

Ti piace questa:

$mysqli=new mysqli("database", "db", "pass", "user"); 

$stmt = $mysqli->prepare("SELECT email FROM users WHERE id=? "); 
$stmt->bind_param('i',$_SESSION['id']); 
$stmt->execute(); 
$stmt->store_result(); 
$stmt->bind_result($email); 
while($stmt->fetch()){ 
    echo $email; 
} 
$stmt->free_result(); //why do i need this? 
$stmt->close();  //why do i need this? 

In definitiva la questione si riduce a quando è il momento opportuno per utilizzare freeresult() e chiudere ()?

risposta

1

L'istruzione free_results indica al motore del database che può rilasciare il set di risultati.

Durante l'esecuzione dell'istruzione, viene creato un iteratore. Il client (la tua app) itera ciascun risultato scaricandoli uno a uno o in un blocco.

Ciò consente all'applicazione di ripetere milioni di record senza scaricare tutti i risultati in un blocco.

EDIT

risultato libero libererà memoria sul lato client. Utile se un singolo record è molto grande e la memoria deve essere liberata.

See: http://php.net/manual/en/function.mysql-free-result.php

+1

No, non dice nulla al database – zerkms

+0

Così posso usare freeresult() alla fine di qualsiasi dichiarazione che non ho bisogno di storeresult() per? –

+1

@Dan Kanze: finché non si verificano problemi - non farlo, non sprecare cicli di CPU per niente – zerkms

Problemi correlati