PHP에서는 mysql_free_result() 함수를 사용하여 MySQL 쿼리 결과와 연관된 커서 메모리를 해제할 수 있습니다. 이 함수는 별도의 반환값이 없으며, 대용량 데이터를 다룰 때 서버의 메모리를 효율적으로 관리하는 데 유용합니다.
문법(Syntax)
mysql_free_result(result);
매개변수(Parameter)
이 함수에서 사용되는 매개변수는 다음과 같습니다.
| 번호 | 매개변수 및 설명 |
| 1 | result (필수) mysql_query(), mysql_store_result() 또는 mysql_use_result() 함수가 반환한 결과 집합(result set) 식별자를 지정합니다. |
사용 예제
아래는 mysql_free_result() 함수를 활용해 결과 메모리를 해제하는 기본적인 예제입니다.
<?php
$conn = mysql_connect("localhost", "user", "password");
mysql_select_db("test_db", $conn);
$result = mysql_query("SELECT * FROM users");
while ($row = mysql_fetch_assoc($result)) {
echo $row['name'] . "<br>";
}
// 더 이상 결과가 필요 없으므로 메모리 해제
mysql_free_result($result);
mysql_close($conn);
?>
참고 사항
mysql_* 계열 함수는 PHP 5.5부터 공식적으로 지원 중단(deprecated)되었으며, PHP 7에서 완전히 제거되었습니다. 따라서 최신 프로젝트에서는 동일한 역할을 하는 mysqli_free_result()(MySQLi 확장) 또는 PDO 방식을 사용하는 것이 좋습니다.
- MySQLi:
$result->free();또는mysqli_free_result($result); - PDO:
$stmt = null;또는$stmt->closeCursor();
또한 스크립트 실행이 종료되면 PHP가 자동으로 메모리를 해제하기 때문에, 소량의 데이터를 처리하는 경우에는 이 함수를 반드시 호출하지 않아도 됩니다. 하지만 하나의 스크립트에서 여러 개의 큰 결과 집합을 다룰 때는 명시적으로 메모리를 해제해 주는 것이 성능 최적화에 도움이 됩니다.