>  기사  >  백엔드 개발  >  php--PDO-연결 및 연결 관리

php--PDO-연결 및 연결 관리

伊谢尔伦
伊谢尔伦원래의
2016-11-22 09:36:531358검색

PDO 기본 클래스의 인스턴스를 생성하여 연결이 설정됩니다. 어떤 드라이버를 사용하든 PDO 클래스 이름이 사용됩니다. 생성자는 데이터베이스 소스(소위 DSN)와 사용자 이름 및 비밀번호(있는 경우)를 지정하는 매개변수를 받습니다.

예제 #1 MySQL에 연결

<?php
    $dbh = new PDO(&#39;mysql:host=localhost;dbname=test&#39;, $user, $pass);
?>

연결 오류가 있는 경우 PDOException 예외 개체가 발생합니다. 오류 조건을 처리하려면 예외를 포착하거나 set_Exception_handler() 를 통해 설정된 애플리케이션 전역 예외 핸들러에 그대로 두도록 선택할 수 있습니다.

예제 #2 연결 오류 처리

<?php
    try {
        $dbh = new PDO(&#39;mysql:host=localhost;dbname=test&#39;, $user, $pass);
        foreach($dbh->query(&#39;SELECT * from FOO&#39;) as $row) {
            print_r($row);
        }
        $dbh = null;
    } catch (PDOException $e) {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
    }
?>

애플리케이션이 PDO 생성자에서 예외를 포착하지 못하는 경우 zend 엔진이 취하는 기본 조치는 스크립트를 종료하고 다음을 표시하는 것입니다. 이 역추적은 사용자 이름과 비밀번호를 포함한 전체 데이터베이스 연결 세부 정보를 공개할 수 있습니다. 그러므로 명시적으로(catch 문을 통해) 또는 암시적으로(set_Exception_handler()를 통해) 예외를 포착하는 것은 책임입니다.

데이터가 성공적으로 연결되면 PDO 클래스의 인스턴스가 스크립트로 반환됩니다. 이 연결은 PDO 개체의 수명 주기 동안 활성 상태로 유지됩니다. 연결을 닫으려면 개체를 삭제하여 해당 개체에 대한 나머지 참조가 모두 삭제되도록 해야 합니다. 개체 변수에 NULL 값을 할당할 수 있습니다. 이를 명시적으로 수행하지 않으면 PHP는 스크립트 끝에서 자동으로 연결을 닫습니다.

예 #3 연결 닫기

<?php
    $dbh = new PDO(&#39;mysql:host=localhost;dbname=test&#39;, $user, $pass);
    // 在此使用连接
    // 现在运行完成,在此关闭连接
    $dbh = null;
?>

많은 웹 애플리케이션은 데이터베이스 서비스에 대한 지속적인 연결을 사용하여 이점을 얻습니다. 영구 연결은 스크립트가 끝난 후에도 닫히지 않으며 동일한 자격 증명을 사용하는 다른 스크립트 연결 요청이 이루어질 때 캐시되어 재사용됩니다. 지속적인 연결 캐싱을 사용하면 스크립트가 데이터베이스와 통신해야 할 때마다 새 연결을 설정하는 오버헤드를 방지하여 웹 애플리케이션을 더 빠르게 만들 수 있습니다.

예제 #4 영구 연결

<?php
    $dbh = new PDO(&#39;mysql:host=localhost;dbname=test&#39;, $user, $pass, array(
        PDO::ATTR_PERSISTENT => true
    ));
?>

영구 연결을 사용하려면 PDO 생성자에 전달된 드라이버 옵션 배열에 PDO::ATTR_PERSISTENT를 설정해야 합니다. 객체가 초기화된 후 PDO::setAttribute()를 사용하여 이 속성을 설정하면 드라이버는 영구 연결을 사용하지 않습니다.

PDO ODBC 드라이버를 사용하고 ODBC 라이브러리가 ODBC 연결 풀링을 지원하는 경우(unixODBC와 Windows의 두 가지 접근 방식이 있으며 더 있을 수도 있음) 영구 PDO 연결을 사용하지 않는 것이 좋습니다. ODBC 연결 풀 레이어 처리에 대한 연결 캐시입니다. ODBC 연결 풀은 프로세스의 다른 모듈과 공유됩니다. PDO가 연결을 캐시하도록 요청하면 연결이 ODBC 연결 풀로 반환되지 않으므로 다른 모듈을 제공하기 위해 추가 연결이 생성됩니다.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.