2012-01-25 17 views
5

kullanmanın önemi nedir:PHP ::: Hazırlanan Tablolar ::: freeresult() ::: close()

$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? 
: Böyle hazırlanmış statments kullanarak bir veritabanı çağrısının ardından

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

Soruyorum çünkü onlar olmadan gözle görülür bir performans düşüşü göremiyorum. Bunun gibi

$stmt->store_result(); 

:

$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? 

Sonuçta soru freeresult() ve yakın (kullanmak için uygun zamanı geldiğinde iner o komutlar genellikle sadece kullanıyorum sonucunu saklamak zaman kullanılır)?

cevap

1

free_results ifadesi, veritabanı motoruna sonuç kümesini yayınlayabileceğini bildirir.

İfadenizi gerçekleştirirken, bir yineleyici oluşturulur. İstemci (uygulamanız) her sonucu tek tek veya yığın halinde indirerek yinelemektedir.

Bu, tüm sonuçları bir yığın halinde indirmeden milyonlarca kaydı yinelemenizi sağlar.

DÜZENLEME

Ücretsiz sonuç istemci tarafında ayrılan belleği serbest bırakır. Tek bir kayıt çok büyük ve hafızanın serbest olması gerekiyorsa kullanışlıdır.

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

+1

Hayır, o yüzden herhangi bir ifadenin sonunda freeresult() kullanabilir veritabanına – zerkms

+0

bir şey söylemez ı için) (storeresult gerekmez? –

+1

@Dan Kanze: herhangi bir sorunla karşılaşmadığınız sürece - bunu yapmayın, hiçbir şey için CPU döngülerini boşa harcamayın – zerkms