oci_pconnect

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_pconnect — 영구 연결을 사용하여 Oracle 데이터베이스에 연결


설명

oci_pconnect(
    string $username,
    string $password,
    ?string $connection_string = null,
    string $encoding = "",
    int $session_mode = OCI_DEFAULT
): resource|false
                

Oracle 서버에 대한 영구 연결을 만들고 로그온합니다.

영구 연결은 캐시되어 요청 간에 재사용되므로 각 페이지 로드에 대한 오버헤드가 줄어듭니다. 일반적인 PHP 애플리케이션은 Apache 자식 프로세스(또는 PHP FPM 프로세스)별로 Oracle 서버에 대해 열린 단일 영구 연결을 갖습니다. 자세한 내용은 OCI8 연결 처리 및 연결 풀링 섹션을 참조하십시오.


매개변수

username
Oracle 사용자 이름입니다.
password
사용자 이름의 비밀번호입니다.
connection_string
연결할 Oracle 인스턴스를 포함합니다. » Easy Connect 문자열, tnsnames.ora 파일의 연결 이름 또는 로컬 Oracle 인스턴스의 이름일 수 있습니다.

지정하지 않거나 null인 경우 PHP는 TWO_TASK(Linux의 경우) 또는 LOCAL(Windows의 경우) 및 ORACLE_SID와 같은 환경 변수를 사용하여 연결할 Oracle instance를 결정합니다.

Easy Connect 이름 지정 방법을 사용하려면 PHP가 Oracle 10g 이상의 클라이언트 라이브러리와 연결되어 있어야 합니다. Oracle 10g용 Easy Connect 문자열은 [//]host_name[:port][/service_name] 형식입니다. Oracle 11g에서 구문은 [//]host_name[:port][/service_name][:server_type][/instance_name]입니다. 시간 초과 및 연결 유지 설정을 포함하여 Oracle 19c에 추가 옵션이 도입되었습니다. 오라클 문서를 참조하십시오. 서비스 이름은 데이터베이스 서버 시스템에서 Oracle 유틸리티 lsnrctl status를 실행하여 찾을 수 있습니다.

tnsnames.ora 파일은 /your/path/to/instantclient/network/admin, $ORACLE_HOME/network/admin/etc를 포함하는 Oracle Net 검색 경로에 있을 수 있습니다. 또는 $TNS_ADMIN/tnsnames.ora를 읽도록 TNS_ADMIN을 설정합니다. 웹 데몬에 파일에 대한 읽기 액세스 권한이 있는지 확인하십시오.

encoding
Oracle 클라이언트 라이브러리에서 사용하는 문자 집합을 결정합니다. 문자 집합은 데이터베이스에서 사용하는 문자 집합과 일치할 필요가 없습니다. 일치하지 않는 경우 Oracle은 데이터를 데이터베이스 문자 집합으로 또는 그 반대로 변환하기 위해 최선을 다할 것입니다. 문자 집합에 따라 사용 가능한 결과를 제공하지 않을 수 있습니다. 변환은 또한 약간의 시간 오버헤드를 추가합니다.

지정하지 않으면 Oracle 클라이언트 라이브러리는 NLS_LANG 환경 변수에서 문자 집합을 결정합니다.

이 매개변수를 전달하면 연결하는 데 걸리는 시간을 줄일 수 있습니다.

session_mode
이 매개변수는 PHP 5(PECL OCI8 1.1) 버전부터 사용할 수 있으며 OCI_DEFAULT, OCI_SYSOPEROCI_SYSDBA 값을 허용합니다. OCI_SYSOPER 또는 OCI_SYSDBA가 지정된 경우 이 기능은 외부 자격 증명을 사용하여 권한 있는 연결을 설정하려고 시도합니다. 권한 있는 연결은 기본적으로 비활성화되어 있습니다. 활성화하려면 oci8.privileged_connectOn으로 설정해야 합니다.

PHP 5.3(PECL OCI8 1.3.4)은 OCI_CRED_EXT 모드 값을 도입했습니다. 이는 Oracle이 데이터베이스에서 구성해야 하는 외부 또는 OS 인증을 사용하도록 지시합니다. OCI_CRED_EXT 플래그는 "/"의 사용자 이름과 빈 암호에만 사용할 수 있습니다. oci8.privileged_connectOn 또는 Off일 수 있습니다.

OCI_CRED_EXTOCI_SYSOPER 또는 OCI_SYSDBA 모드와 결합될 수 있습니다.

OCI_CRED_EXT는 보안상의 이유로 Windows에서 지원되지 않습니다.


반환 값

연결 식별자를 반환하거나 오류가 발생하면 false를 반환합니다.


Examples

예제 #1 기본 oci_pconnect() Easy Connect 구문을 사용한 예제

                  
<?php

// Connects to the XE service (i.e. database) on the "localhost" machine
$conn = oci_pconnect('hr', 'welcome', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'SELECT * FROM employees');
oci_execute($stid);

echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";

?>
                    
                  

매개변수 사용에 대한 추가 예는 oci_connect()를 참조하십시오.


노트

메모: PHP 5.1.2 및 PECL OCI8 1.1부터 oci8.persistent_timeout, oci8.ping_intervaloci8.max_persistent 구성 값을 설정하여 PHP 프로세스당 영구 Oracle 연결의 수명 및 최대 수를 조정할 수 있습니다.


기타