PHP.mk документација

oci_close

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.oci-close.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.oci-close.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
oci_close

Референца за `function.oci-close.php` со подобрена типографија и навигација.

function.oci-close.php

oci_close

Класата OCICollection

oci_closeCloses an Oracle connection

= NULL

oci_close(resource $connection): ?bool

Затвора Oracle конекција connectionОдзема oci_connect() or oci_new_connect().

. Основната база на податоци е затворена ако други ресурси не ја користат и ако е креирана со

Параметри

connection

Се препорачува да се затворат конекциите кои веќе не се потребни бидејќи ова ги прави ресурсите на базата на податоци достапни за други корисници. oci_connect(), oci_pconnect(), или oci_new_connect().

Вратени вредности

Патеката до PHP скриптата што треба да се провери. null when oci8.old_oci_close_semantics Идентификатор на Oracle конекција вратен од true otherwise.

Примери

е овозможено, или

Пример #1 Затворање конекција

<?php

$conn
= oci_connect('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 departments');
$r = oci_execute($stid);
oci_fetch_all($stid, $res);
var_dump($res);

// Free the statement identifier when closing the connection
oci_free_statement($stid);
oci_close($conn);

?>

Ресурсите поврзани со конекција треба да се затворат за да се осигура дека основната конекција на базата на податоци е правилно завршена и ресурсите на базата на податоци се ослободени.

Пример #2 Конекциите на базата на податоци не се затвораат додека не се затворат сите референци

<?php

$conn
= oci_connect('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 departments'); // this increases the refcount on $conn
oci_execute($stid);
oci_fetch_all($stid, $res);
var_dump($res);

oci_close($conn);

// $conn is no longer usable in the script but the underlying database
// connection is still held open until $stid is freed.
var_dump($conn); // prints NULL

// While PHP sleeps, querying the Oracle V$SESSION view in a
// terminal window will show that the database user is still connected.
sleep(10);

// When $stid is freed, the database connection is physically closed
oci_free_statement($stid);

// While PHP sleeps, querying the Oracle V$SESSION view in a
// terminal window will show that the database user has disconnected.
sleep(10);

?>

Внатрешниот бројач на референци на идентификатор на конекција мора да биде нула пред да се затвори основната конекција на базата на податоци.

Пример #3 Затворање конекција отворена повеќе пати

<?php

$conn1
= oci_connect('hr', 'welcome', 'localhost/XE');

// Using the same credentials reuses the same underlying database connection
// Any uncommitted changes done on $conn1 will be visible in $conn2
$conn2 = oci_connect('hr', 'welcome', 'localhost/XE');

// While PHP sleeps, querying the Oracle V$SESSION view in a
// terminal window will show that only one database user is connected.
sleep(10);

oci_close($conn1); // doesn't close the underlying database connection
var_dump($conn1); // prints NULL because the variable $conn1 is no longer usable
var_dump($conn2); // displays that $conn2 is still a valid connection resource

?>

Кога се повторно користат ингеренциите на базата на податоци, двете конекции мора да се затворат пред да се затвори основната конекција на базата на податоци.

Пример #4 Конекциите се затвораат кога променливите излегуваат од опсег

<?php

function myfunc() {
$conn = oci_connect('hr', 'hrpwd', 'localhost/XE');
if (!
$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid = oci_parse($conn, 'UPDATE mytab SET id = 100');
oci_execute($stid, OCI_NO_AUTO_COMMIT);
return
"Finished";
}

$r = myfunc();
// At this point a rollback occurred and the underlying database connection was released.

print $r; // displays the function return value "Finished"

?>

Белешки

Забелешка:

Кога сите променливи што упатуваат на конекција излегуваат од опсег и се ослободуваат од PHP, се врши враќање (ако е потребно) и се затвора основната конекција на базата на податоци. oci_parse()Променливите што имаат зависност од идентификаторот на конекцијата, како што се идентификаторите на изјавите вратени од

Забелешка:

На oci_close() , исто така мора да се ослободат пред да се затвори основната конекција на базата на податоци. oci_pconnect().

Види Исто така

  • oci_connect() за понатамошни примери за употреба на параметри.
  • oci_free_statement() - Ослободува сите ресурси поврзани со изјавата или курсорот

Белешки од корисници 2 забелешки

функцијата не ги затвора основните конекции на базата на податоци креирани со
пред 14 години
please note, you can use oci_close() to close persistent connections opened with oci_pconnect() in PHP ver 5.3 or above.
as stated in here:
http://www.php.net/manual/en/oci8.configuration.php#ini.oci8.persistent-timeout
Fahd Alwashmi (F-A-W)
figroc at gmail dot com
For using persistent connections && being able to sleep, I use:

function close_db_locks_on_abort( ) {
    global $conn;
    if( connection_aborted() ) {
        $fp = fopen( "/tmp/shutdown-func.txt", "a" );
        fwrite( $fp, sprintf( "connection aborted on %s\n", date( "d-m-Y H:i:s" ) ) );
        if( $conn ) {
            OCIRollBack( $conn );
            fwrite( $fp, sprintf( "-- DURING CONNECTION! ip=%s, user=%s, page=%s\n", $_SERVER["REMOTE_ADDR"], $_SERVER["PHP_AUTH_USER"], $_SERVER["SCRIPT_FILENAME"] ) );
        }
        fclose( $fp );
    }
}

register_shutdown_function ( "close_db_locks_on_abort" );

This makes sure a rollback is done on a connection when a user hits 'stop', so there will be no locks on table rows.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.