db2_pconnect

(PECL ibm_db2 >= 1.0.0)

db2_pconnect — 데이터베이스에 대한 지속적인 연결을 반환합니다.


설명

db2_pconnect(
    string $database,
    string $username,
    string $password,
    array $options = ?
): resource
                

IBM DB2 Universal Database, IBM Cloudscape 또는 Apache Derby 데이터베이스에 대한 지속적 연결을 리턴합니다.

영구 연결에 대한 자세한 내용은 영구 데이터베이스 연결을 참조하십시오.

지속적 연결에서 db2_close()를 호출하면 항상 true가 반환되지만 기본 DB2 클라이언트 연결은 열려 있고 다음 일치하는 db2_pconnect() 요청을 처리하기 위해 대기합니다.

ibm_db2 버전 1.9.0 이상을 실행하는 사용자는 확장이 요청이 끝날 때 영구 연결에서 트랜잭션 롤백을 수행하여 트랜잭션을 종료한다는 사실을 알고 있어야 합니다. 이렇게 하면 트랜잭션 블록이 수행되기 전에 스크립트 실행이 종료되는 경우 해당 연결을 사용하는 다음 요청으로 트랜잭션 블록이 넘어가지 않습니다.


매개변수

database
DB2 클라이언트 카탈로그의 데이터베이스 별명.
username
데이터베이스에 연결할 때 사용하는 사용자 이름입니다.
password
데이터베이스에 연결할 때 사용하는 암호입니다.
options
유효한 배열 키가 포함되는 연결 동작에 영향을 미치는 연결 옵션의 연관 배열:
autocommit
DB2_AUTOCOMMIT_ON 값을 전달하면 이 연결 핸들에 대한 자동 커밋이 켜집니다.

DB2_AUTOCOMMIT_OFF 값을 전달하면 이 연결 핸들에 대한 자동 커밋이 해제됩니다.

DB2_ATTR_CASE
DB2_CASE_NATURAL 값을 전달하면 열 이름이 자연 대소문자로 리턴되도록 지정됩니다.

DB2_CASE_LOWER 값을 전달하면 열 이름이 소문자로 리턴되도록 지정합니다.

DB2_CASE_UPPER 값을 전달하면 열 이름이 대문자로 리턴되도록 지정됩니다.

CURSOR
DB2_FORWARD_ONLY 값을 전달하면 명령문 자원에 대해 전방 전용 커서가 지정됩니다. 이것은 기본 커서 유형이며 모든 데이터베이스 서버에서 지원됩니다.

DB2_SCROLLABLE 값을 전달하면 명령문 자원에 대해 스크롤 가능한 커서가 지정됩니다. 이 모드는 결과 세트의 행에 대한 임의 액세스를 가능하게 하지만 현재는 IBM DB2 Universal Database에서만 지원됩니다.

다음 새 옵션은 ibm_db2 버전 1.7.0 이상에서 사용할 수 있습니다.

trustedcontext
DB2_TRUSTED_CONTEXT_ENABLE 값을 전달하면 이 연결 핸들에 대해 신뢰할 수 있는 컨텍스트가 켜집니다. 이 매개변수는 db2_set_option()을 사용하여 설정할 수 없습니다.

이 키는 데이터베이스가 카탈로그된 경우(데이터베이스가 로컬인 경우에도) 또는 연결을 생성할 때 전체 DSN을 지정한 경우에만 작동합니다.

데이터베이스를 카탈로그화하려면 다음 명령을 사용하십시오.

db2 catalog tcpip node loopback remote <SERVERNAME> server <SERVICENAME>
db2 catalog database <LOCALDBNAME> as <REMOTEDBNAME> at node loopback
db2 "update dbm cfg using svcename <SERVICENAME>"
db2set DB2COMM=TCPIP
                        

다음 새 i5/OS 옵션은 ibm_db2 버전 1.5.1 이상에서 사용할 수 있습니다.

지속적 연결과 함께 사용되는 충돌 연결 속성은 i5/OS에서 불확실한 결과를 생성할 수 있습니다. 각 영구 연결 사용자 프로필을 사용하는 모든 응용 프로그램에 대해 사이트 정책을 설정해야 합니다. 영구 연결을 사용할 때 기본 DB2_AUTOCOMMIT_ON이 제안됩니다.

i5_lib
규정되지 않은 파일 참조를 분석하는 데 사용할 기본 라이브러리를 나타내는 문자 값입니다. 연결이 시스템 이름 지정 모드를 사용하는 경우에는 유효하지 않습니다.
i5_naming
DB2_I5_NAMING_ON 값은 DB2 UDB CLI iSeries 시스템 이름 지정 모드를 켭니다. 파일은 슬래시(/) 구분 기호를 사용하여 규정됩니다. 규정되지 않은 파일은 작업에 대한 라이브러리 목록을 사용하여 해결됩니다.

DB2_I5_NAMING_OFF 값은 SQL 이름 지정인 DB2 UDB CLI 기본 이름 지정 모드를 끕니다. 파일은 마침표(.) 구분 기호를 사용하여 규정됩니다. 규정되지 않은 파일은 기본 라이브러리 또는 현재 사용자 ID를 사용하여 해석됩니다.

i5_commit
i5_commit 속성은 db2_pconnect() 전에 설정해야 합니다. 연결이 설정된 후 값이 변경되고 원격 데이터 소스에 대한 연결인 경우 연결 핸들에 대해 다음에 성공한 db2_pconnect()까지 변경 사항이 적용되지 않습니다.

메모: php.ini 설정 ibm_db2.i5_allow_commit==0 또는 DB2_I5_TXN_NO_COMMIT가 기본값이지만 i5_commit 옵션으로 대체될 수 있습니다.

DB2_I5_TXN_NO_COMMIT - 확약 제어가 사용되지 않습니다.

DB2_I5_TXN_READ_UNCOMMITTED - 더러운 읽기, 반복 불가능한 읽기 및 팬텀이 가능합니다.

DB2_I5_TXN_READ_COMMITTED - 더티 읽기가 불가능합니다. 반복 불가능한 읽기 및 팬텀이 가능합니다.

DB2_I5_TXN_REPEATABLE_READ - 더티 읽기 및 반복 불가능한 읽기가 불가능합니다. 팬텀이 가능합니다.

DB2_I5_TXN_SERIALIZABLE - 트랜잭션을 직렬화할 수 있습니다. Dirty reads, non-repeatable reads 및 phantoms는 불가능합니다.

i5_query_optimize
DB2_FIRST_IO 모든 쿼리는 가능한 한 빨리 출력의 첫 번째 페이지를 반환하는 것을 목표로 최적화되어 있습니다. 이 목표는 출력 데이터의 첫 페이지를 본 후 쿼리를 취소할 가능성이 가장 높은 사용자가 출력을 제어할 때 잘 작동합니다. OPTIMIZE FOR nnn ROWS 절로 코딩된 쿼리는 절에서 지정한 목표를 따릅니다.

DB2_ALL_IO 모든 쿼리는 전체 쿼리를 실행하여 최단 시간 내에 완료되도록 최적화되었습니다. 쿼리 출력이 파일이나 보고서에 기록되거나 인터페이스가 출력 데이터를 대기열에 넣을 때 좋은 옵션입니다. OPTIMIZE FOR nnn ROWS 절로 코딩된 쿼리는 절에서 지정한 목표를 따릅니다. 이것이 기본값입니다.

i5_dbcs_alloc
DB2_I5_DBCS_ALLOC_ON 값은 DBCS 변환 열 크기 증가를 위해 DB2 6X 할당 체계를 켭니다.

DB2_I5_DBCS_ALLOC_OFF 값은 DBCS 변환 열 크기 증가에 대한 DB2 6X 할당 체계를 끕니다.

메모: php.ini 설정 ibm_db2.i5_dbcs_alloc==0 또는 DB2_I5_DBCS_ALLOC_OFF가 기본값이지만 i5_dbcs_alloc 옵션으로 대체될 수 있습니다.

i5_date_fmt
DB2_I5_FMT_ISO - ISO(International Organization for Standardization) 날짜 형식 yyyy-mm-dd가 사용됩니다. 이것이 기본값입니다.

DB2_I5_FMT_USA - 미국 날짜 형식 mm/dd/yyyy가 사용됩니다.

DB2_I5_FMT_EUR - 유럽 날짜 형식 dd.mm.yyyy가 사용됩니다.

DB2_I5_FMT_JIS - 일본 산업 표준 날짜 형식 yyyy-mm-dd가 사용됩니다.

DB2_I5_FMT_MDY - 날짜 형식 mm/dd/yyyy가 사용됩니다.

DB2_I5_FMT_DMY - 날짜 형식 dd/mm/yyyy가 사용됩니다.

DB2_I5_FMT_YMD - 날짜 형식 yy/mm/dd가 사용됩니다.

DB2_I5_FMT_JUL - 율리우스력 날짜 형식 yy/ddd가 사용됩니다.

DB2_I5_FMT_JOB - 작업 기본값이 사용됩니다.

i5_date_sep
DB2_I5_SEP_SLASH - 슬래시( / )가 날짜 구분 기호로 사용됩니다. 이것이 기본값입니다.

DB2_I5_SEP_DASH - 대시( - )가 날짜 구분 기호로 사용됩니다.

DB2_I5_SEP_PERIOD - 마침표( . )가 날짜 구분 기호로 사용됩니다.

DB2_I5_SEP_COMMA - 쉼표( , )가 날짜 구분 기호로 사용됩니다.

DB2_I5_SEP_BLANK - 공백이 날짜 구분자로 사용됩니다.

DB2_I5_SEP_JOB - 작업 기본값이 사용됩니다.

i5_time_fmt
DB2_I5_FMT_ISO - ISO(International Organization for Standardization) 시간 형식 hh.mm.ss가 사용됩니다. 이것이 기본값입니다.

DB2_I5_FMT_USA - 미국 시간 형식 hh:mmxx가 사용됩니다. 여기서 xx는 AM 또는 PM입니다.

DB2_I5_FMT_EUR - 유럽 시간 형식 hh.mm.ss가 사용됩니다.

DB2_I5_FMT_JIS - 일본 산업 표준 시간 형식 hh:mm:ss가 사용됩니다.

DB2_I5_FMT_HMS - hh:mm:ss 형식이 사용됩니다.

i5_time_sep
DB2_I5_SEP_COLON - 콜론( : )이 시간 구분 기호로 사용됩니다. 이것이 기본값입니다.

DB2_I5_SEP_PERIOD - 마침표( . )가 시간 구분 기호로 사용됩니다.

DB2_I5_SEP_COMMA - 쉼표( , )가 시간 구분 기호로 사용됩니다.

DB2_I5_SEP_BLANK - 공백이 시간 구분자로 사용됩니다.

DB2_I5_SEP_JOB - 작업 기본값이 사용됩니다.

i5_decimal_sep
DB2_I5_SEP_PERIOD - 마침표( . )가 소수점 구분 기호로 사용됩니다. 이것이 기본값입니다.

DB2_I5_SEP_COMMA - 쉼표( , )가 소수점 구분 기호로 사용됩니다.

DB2_I5_SEP_JOB - 작업 기본값이 사용됩니다.

다음 새 i5/OS 옵션은 ibm_db2 버전 1.8.0 이상에서 사용할 수 있습니다.

i5_libl
규정되지 않은 파일 참조를 분석하는 데 사용할 라이브러리 목록을 나타내는 문자 값입니다. 공백 'i5_libl'=>"MYLIB YOURLIB ANYLIB"로 구분된 라이브러리 목록 요소를 지정하십시오.

메모: i5_libl은 i5/OS V5R4 이상에서만 사용할 수 있는 qsys2/qcmdexc('cmd',cmdlen)를 호출합니다.


반환 값

연결 시도가 성공하면 연결 핸들 리소스를 반환합니다. db2_pconnect()database, usernamepassword 매개변수와 정확히 일치하는 기존 연결 자원을 재사용하려고 시도합니다. 연결 시도가 실패하면 db2_pconnect()false를 리턴합니다.


변경 로그

버전 설명
ibm_db2 1.9.0 영구 연결 내의 활성 트랜잭션은 각 요청이 끝날 때 롤백됩니다.
ibm_db2 1.8.0 i5_libl 옵션은 i5/OS 사용자가 사용할 수 있습니다.
ibm_db2 1.7.0 trustedcontext 옵션을 사용할 수 있습니다.
ibm_db2 1.5.1 i5_lib, i5_naming, i5_commit, i5_query_optimize, i5_dbcs_alloc, i5_date_fmt, i5_date_sep, i5_time_fmt, i5_time_sepi5_decimal_sep 옵션은 i5/OS 사용자가 사용할 수 있습니다.

Examples

예제 #1 db2_pconnect() 예제

다음 예에서 db2_pconnect()에 대한 첫 번째 호출은 새로운 지속적 연결 자원을 리턴합니다. db2_pconnect()에 대한 두 번째 호출은 첫 번째 지속적 연결 자원을 단순히 재사용하는 지속적 연결 자원을 리턴합니다.

                  
<?php
$database = 'SAMPLE';
$user = 'db2inst1';
$password = 'ibmdb2';

$pconn = db2_pconnect($database, $user, $password);

if ($pconn) {
    echo "Persistent connection succeeded.";
}
else {
    echo "Persistent connection failed.";
}

$pconn2 = db2_pconnect($database, $user, $password);
if ($pconn) {
    echo "Second persistent connection succeeded.";
}
else {
    echo "Second persistent connection failed.";
}
?>
                  
                

위의 예는 다음을 출력합니다.

Persistent connection succeeded.
Second persistent connection succeeded.
                

예제 #2 신뢰할 수 있는 컨텍스트 사용

다음 예는 신뢰할 수 있는 컨텍스트를 활성화하고, 사용자를 전환하고, 현재 사용자 ID를 가져오는 방법을 보여줍니다.

                 
<?php

$database = "SAMPLE";
$hostname = "localhost";
$port = 50000;
$authID = "db2inst1";
$auth_pass = "ibmdb2";

$tc_user = "tcuser";
$tc_pass = "tcpassword";

$dsn = "DATABASE=$database;HOSTNAME=$hostname;PORT=$port;
  PROTOCOL=TCPIP;UID=$authID;PWD=$auth_pass;";
$options = array ("trustedcontext" => DB2_TRUSTED_CONTEXT_ENABLE);

$tc_conn = db2_pconnect($dsn, "", "", $options);
if($tc_conn) {
    echo "Explicit trusted connection succeeded.\n";

    if(db2_get_option($tc_conn, "trustedcontext")) {
        $userBefore = db2_get_option($tc_conn, "trusted_user");

        //Do some work as user 1.

        //Switching to trusted user.
        $parameters = array("trusted_user" => $tc_user,
          "trusted_password" => $tcuser_pass);
        $res = db2_set_option ($tc_conn, $parameters, 1);

        $userAfter = db2_get_option($tc_conn, "trusted_user");
        //Do more work as trusted user.

        if($userBefore != $userAfter) {
            echo "User has been switched." . "\n";
        }
    }

    db2_close($tc_conn);
}
else {
    echo "Explicit trusted connection failed.\n";
}
?>
                 
               

위의 예는 다음을 출력합니다.

Explicit trusted connection succeeded.
User has been switched.
               

기타

  • db2_connect() - 데이터베이스에 대한 연결을 반환합니다.