Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 결과 커서 메모리를 해제하는 PHP 함수, mysql_free_result() 완벽 정리

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가 자동으로 메모리를 해제하기 때문에, 소량의 데이터를 처리하는 경우에는 이 함수를 반드시 호출하지 않아도 됩니다. 하지만 하나의 스크립트에서 여러 개의 큰 결과 집합을 다룰 때는 명시적으로 메모리를 해제해 주는 것이 성능 최적화에 도움이 됩니다.