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

oci_pconnect

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

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

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

function.oci-pconnect.php

oci_pconnect

Класата OCICollection

oci_pconnectПоврзете се на Oracle база на податоци користејќи постојана врска

= NULL

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

Создава постојана врска со Oracle сервер и се најавува.

Постојаните врски се кешираат и повторно се користат помеѓу барањата, што резултира со намалени трошоци при секое вчитување на страницата; типична PHP апликација ќе има една постојана врска отворена кон Oracle сервер по процес на дете на Apache (или PHP FPM процес). Видете го OCI8 Ракување со конекција и групирање на конекции инструкции за инсталација

Параметри

username

Корисничкото име на Oracle.

password

Лозинката за username.

connection_string

за поврзување. Тоа може да биде Oracle instance » Easy Connect стринг , или Connect Name оддатотеката, или името на локална Oracle инстанца. tnsnames.ora Ако не е наведено или

, PHP користи променливи на околината како null(на Linux) или TWO_TASK (на Windows) и LOCAL за да го одреди ORACLE_SID за поврзување. Oracle instance За да го користите методот за именување Easy Connect, PHP мора да биде поврзан со Oracle 10

или поголеми клиентски библиотеки. Easy Connect стринг за Oracle 10g е во форма:g не кешира врски и секогаш ќе враќа сосема нова, свежо отворена рачка за врска. Ова е корисно ако вашата апликација бара трансакциска изолација помеѓу два сета на прашања. е во форма:. Од Oracle 11g, синтаксисата е: [//]име_на_хост[:порт][/име_на_услуга]. Дополнителни опции беа воведени со Oracle 19c, вклучувајќи поставки за тајмаут и keep-alive. Погледнете ја документацијата на Oracle. Имињата на услугите може да се најдат со стартување на Oracle алатката lsnrctl status на машината на серверот на базата на податоци.

На tnsnames.ora датотеката може да биде во патеката за пребарување на Oracle Net, која вклучува /your/path/to/instantclient/network/admin, $ORACLE_HOME/network/admin and /etc. Алтернативно поставете TNS_ADMIN така што $TNS_ADMIN/tnsnames.ora се чита. Осигурете се дека веб-демонот има пристап за читање до датотеката.

encoding

Го одредува множеството знаци што го користат библиотеките на Oracle Client. Множеството знаци не мора да се совпаѓа со множеството знаци што го користи базата на податоци. Ако не се совпаѓаат, Oracle ќе направи се што е можно за да ги претвори податоците до и од множеството знаци на базата на податоци. Во зависност од множествата на знаци, ова можеби нема да даде употребливи резултати. Конверзијата исто така додава некои временски трошоци.

Ако не е наведено, библиотеките на Oracle Client одредуваат множество знаци од NLS_LANG променливата на околината.

Поминувањето на овој параметар може да го намали времето потребно за поврзување.

session_mode

Овој параметар е достапен од верзијата PHP 5 (PECL OCI8 1.1) и прифаќа следниве вредности: OCI_DEFAULT, OCI_SYSOPER and OCI_SYSDBA. Ако било кој од OCI_SYSOPER or OCI_SYSDBA беа наведени, оваа функција ќе се обиде да воспостави привилегирана врска користејќи надворешни акредитиви. Привилегираните врски се оневозможени по дифолт. За да ги овозможите, треба да го поставите oci8.privileged_connect to On.

PHP 5.3 (PECL OCI8 1.3.4) го воведе OCI_CRED_EXT вредност на режимот. Ова му кажува на Oracle да користи надворешна автентикација или автентикација на ОС, што мора да биде конфигурирано во базата на податоци. Флагот OCI_CRED_EXT може да се користи само со корисничко име "/" и празна лозинка. oci8.privileged_connect може да биде On or Off.

OCI_CRED_EXT [//]име_на_хост[:порт][/име_на_услуга][:тип_на_сервер][/име_на_инстанца] OCI_SYSOPER or OCI_SYSDBA modes.

OCI_CRED_EXT може да се комбинира со

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

не е поддржано на Windows од безбедносни причини. false при грешка.

Примери

Пример #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() Следното покажува како можете да ги одделите врските.

Белешки

Забелешка: Времетраењето и максималниот број на постојани Oracle конекции по PHP процес може да се прилагодат со поставување на следните вредности за конфигурација: oci8.persistent_timeout, oci8.ping_interval and oci8.max_persistent.

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

  • oci_connect() за понатамошни примери за употреба на параметри.
  • oci_new_connect() за информации за решавање проблеми.

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

php на jaggard точка org точка uk
пред 17 години
[Editor's note: OCI8 1.3 should not experience the problem described in this user comment. The first use of such a connection will return an Oracle error which will trigger a cleanup in PHP.  Subsequent persistent connection calls will then succeed.  For high availability you might consider doing consecutive oci_pconnect calls in your script.]

If you connect using oci_pconnect and the connection has logged you off but is still valid, there seems to be no way to re-use that connection. The next time I try oci_pconnect and then perform an oci_execute operation, I get a "ORA-01012: not logged on" warning. This problem remains, even if I close the connection using oci_close. I ended up with the following (rather annoying) code.

<?php
    function getOracleConnection()
    {
      if (!function_exists('oci_pconnect'))
        return false;
      $toReturn = oci_pconnect('user', 'pass', 'db');
      if ($testRes = @oci_parse($toReturn, 'SELECT Count(group_type_code) FROM pvo.group_type'))
        if (@oci_execute($testRes))
          if (@oci_fetch_array($testRes))
            return $toReturn;
      oci_close($toReturn);
      if (!function_exists('oci_connect'))
        return false;
      $toReturn = oci_connect('user', 'pass', 'db');
      if ($testRes = @oci_parse($toReturn, 'SELECT Count(group_type_code) FROM pvo.group_type'))
        if (@oci_execute($testRes))
          if (@oci_fetch_array($testRes))
            return $toReturn;
      oci_close($toReturn);
      if (!function_exists('oci_new_connect'))
        return false;
      $toReturn = oci_new_connect('user', 'pass', 'db');
      if ($testRes = @oci_parse($toReturn, 'SELECT Count(group_type_code) FROM pvo.group_type'))
        if (@oci_execute($testRes))
          if (@oci_fetch_array($testRes))
            return $toReturn;
      oci_close($toReturn);
      return false;
    }
?>
gotankersley на NOSPAM точка com
пред 13 години
Installed on CentOS 6.2, and had lots of trouble getting it to recognize tnsnames.ora.  The fix for me was:

1. Make sure apache is getting the TNS_ADMIN env variable by putting it in the /etc/init.d/httpd file:
 TNS_ADMIN=/usr/lib/oracle/11.2/client64/network/admin
 export PATH TNS_ADMIN

This can be debugging in PHP by <?php echo system('env'); ?> and by verifying that TNS_ADMIN is there.

2. Make sure to use the name at the beginning of the tnsnames.ora file - not the SID (although ideally they should match.  However, if the name at the beginning is XXXX.world then pconnect will expect this - not the SID)
На оваа страница

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

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

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

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

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