OCINLogon
(PHP 4, PHP 5, PECL oci8:1.0-1.2.4)
OCINLogon — 오라클 데이터베이스에 접속하고 새로운 접속을 이용해서 로그온한다. 새로운 세션(session)을 넘겨준다.
Description
int OCINLogon
( string $username
, string $password
[, string $db
] )
OCINLogon() 오라클8 DB에 새로운 접속을 형성하고, 로그온 한다. 세번째 인수는 로컬 오라클 인스턴스명이나 tnsnames.ora 설정파일의 엔트리(entry)명이 될수 있다. 세번째 인수가 생략되면, PHP는 접속할 오라클 데이터베이스를 결정하기 위해 환경변수 ORACLE_SID(Oracle instance)나 TWO_TASK(tnsnames.ora)를 이용한다.
OCINLogon()함수는 새로운 접속을 강제로 형성한다. 각 트랜잭션들을 분리할 필요가 있을때 사용해야 할것이다. 기본적으로, OCILogon()함수를 사용하면 접속은 페이지 레벨에서 분배되어지고, OCIPLogon()함수는 웹서버 프로세스 레벨에서 분배되어진다. OCINLogon()함수로 두개 이상의 접속을 연다면, 모든 커밋(commits)과 롤백(rollbacks)은 특정 접속에만 적용되어진다.
이 예제는 접속이 어떻게 분리되는지 보여준다.
Example#1 OCINLogon
<?php print "<HTML><PRE>"; $db = ""; $c1 = ocilogon("scott","tiger",$db); $c2 = ocinlogon("scott","tiger",$db); function create_table($conn) { $stmt = ociparse($conn,"create table scott.hallo (test varchar2(64))"); ociexecute($stmt); echo $conn." created table\n\n"; } function drop_table($conn) { $stmt = ociparse($conn,"drop table scott.hallo"); ociexecute($stmt); echo $conn." dropped table\n\n"; } function insert_data($conn) { $stmt = ociparse($conn,"insert into scott.hallo values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))"); ociexecute($stmt,OCI_DEFAULT); echo $conn." inserted hallo\n\n"; } function delete_data($conn) { $stmt = ociparse($conn,"delete from scott.hallo"); ociexecute($stmt,OCI_DEFAULT); echo $conn." deleted hallo\n\n"; } function commit($conn) { ocicommit($conn); echo $conn." committed\n\n"; } function rollback($conn) { ocirollback($conn); echo $conn." rollback\n\n"; } function select_data($conn) { $stmt = ociparse($conn,"select * from scott.hallo"); ociexecute($stmt,OCI_DEFAULT); echo $conn."----selecting\n\n"; while (ocifetch($stmt)) echo $conn." <".ociresult($stmt,"TEST").">\n\n"; echo $conn."----done\n\n"; } create_table($c1); insert_data($c1); select_data($c1); select_data($c2); rollback($c1); select_data($c1); select_data($c2); insert_data($c2); commit($c2); select_data($c1); delete_data($c1); select_data($c1); select_data($c2); commit($c1); select_data($c1); select_data($c2); drop_table($c1); print "</PRE></HTML>"; ?>
See also OCILogon() and OCIPLogon().