2012-01-25 6 views
5

은 사용의 중요성을 무엇입니까 :PHP ::: 문 준비 ::: 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? 
이 같은 준비가 문에서도를 사용하여 데이터베이스 호출 후

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

나는 그것들없이 눈에 띄는 성능 저하가 보이지 않기 때문에 묻습니다. 이처럼

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

가 궁극적으로 문제는 freeresult()와 가까이 (사용하기 적절한 시간 때에 내려 오는 그 명령은 보통 내가 사용 결과를 저장하는 경우에 사용됩니다)?

답변

1

free_results 문은 데이터베이스 엔진에 결과 집합을 릴리스 할 수 있음을 알립니다.

문을 실행하면 반복기가 작성됩니다. 클라이언트 (앱)는 하나씩 또는 청크로 다운로드하여 각 결과를 반복합니다.

이 앱을 사용하면 모든 결과를 하나의 청크에 다운로드하지 않고도 수백만 건의 레코드를 반복 할 수 있습니다.

수정

무료 결과는 클라이언트 측에서 메모리를 확보합니다. 단일 레코드가 매우 크고 메모리를 해제해야하는 경우에 유용합니다.

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

+1

아니, 그것은 그래서 내가 어떤 문장의 끝에 freeresult()를 사용할 수있는 데이터베이스 – zerkms

+0

에 아무것도 말하지 않는 I가) (storeresult 할 필요가 없습니다? –

+1

@ 단 칸체 (DanCanze) : 문제가 발생하지 않는 한 - 아무 것도하지 않고 CPU주기를 낭비하지 마십시오. – zerkms