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_SYSOPER
및OCI_SYSDBA
값을 허용합니다.OCI_SYSOPER
또는OCI_SYSDBA
가 지정된 경우 이 기능은 외부 자격 증명을 사용하여 권한 있는 연결을 설정하려고 시도합니다. 권한 있는 연결은 기본적으로 비활성화되어 있습니다. 활성화하려면 oci8.privileged_connect를On
으로 설정해야 합니다.PHP 5.3(PECL OCI8 1.3.4)은
OCI_CRED_EXT
모드 값을 도입했습니다. 이는 Oracle이 데이터베이스에서 구성해야 하는 외부 또는 OS 인증을 사용하도록 지시합니다.OCI_CRED_EXT
플래그는 "/"의 사용자 이름과 빈 암호에만 사용할 수 있습니다. oci8.privileged_connect는On
또는Off
일 수 있습니다.OCI_CRED_EXT
는OCI_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) : " ") . "</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
?>
매개변수 사용에 대한 추가 예는 oci_connect()를 참조하십시오.
노트
메모: PHP 5.1.2 및 PECL OCI8 1.1부터 oci8.persistent_timeout, oci8.ping_interval 및 oci8.max_persistent 구성 값을 설정하여 PHP 프로세스당 영구 Oracle 연결의 수명 및 최대 수를 조정할 수 있습니다.
기타
- oci_connect() - Oracle 데이터베이스에 연결
- oci_new_connect() - 고유한 연결을 사용하여 Oracle 서버에 연결