oci_pconnect
(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
oci_pconnect — Ouvre une connexion persistante à un serveur Oracle
Description
$username
, string $password
[, string $connection_string
[, string $character_set
[, int $session_mode
]]] )Ouvre une connexion persistante à un serveur Oracle et s'identifie.
Les connexions persistantes sont mises en cache et sont réutilisées entre les requêtes, réduisant ainsi la charge à chaque chargement de la page ; une application PHP typique a une seule connexion persistante à un serveur Oracle par processus enfant Apache (ou processus PHP FastCGI/CGI). Voir la section sur les connexions persistantes aux bases de données pour plus d'informations.
Liste de paramètres
-
username
-
Le nom d'utilisateur Oracle.
-
password
-
Le mot de passe de l'utilisateur.
-
connection_string
-
Contient l'instance Oracle sur laquelle nous devons nous connecter. Ce peut être une » chaîne de connexion rapide, un nom de connexion issue du fichier tnsnames.ora, ou le nom d'une instance locale Oracle.
Si non spécifié, PHP utilise des variables d'environnement comme
TWO_TASK
(sous Linux) ouLOCAL
(sous Windows) etORACLE_SID
pour déterminer l'instance Oracle sur laquelle nous devons nous connecter.Pour utiliser la méthode de connexion rapide, PHP doit être lié avec la bibliothèque cliente Oracle 10g ou supérieur. La chaîne de connexion rapide pour Oracle 10g ou supérieur est de la forme : [//]host_name[:port][/service_name]. Depuis Oracle 11g, la syntaxe est : [//]host_name[:port][/service_name][:server_type][/instance_name]. Les noms des services peuvent être trouvés en exécutant l'utilitaire Oracle lsnrctl status sur la machine exécutant la base de données.
Le fichier tnsnames.ora peut être dans le chemin de recherche d'Oracle Net, qui inclut $ORACLE_HOME/network/admin et /etc. Une solution alternative serait de définit TNS_ADMIN afin que le fichier $TNS_ADMIN/tnsnames.ora soit lu. Assurez-vous que le daemon exécutant le serveur web a accès en lecture à ce fichier.
-
character_set
-
Détermine le jeu de caractères utilisé par la bibliothèque cliente Oracle. Le jeu de caractères n'a pas besoin d'être identique à celui utilisé par la base de données. S'il ne correspond pas, Oracle ferait de son mieux pour convertir les données depuis le jeu de caractères de la base de données. Suivant les jeux de caractères, il se peut que le résultat ne soit pas parfait. De plus, cette conversion nécessite un peu de temps système.
Si non spécifié, la bibliothèque cliente Oracle déterminera un jeu de caractères depuis la variable d'environnement
NLS_LANG
.Le fait de passer ce paramètre peut réduire la durée de connexion.
-
session_mode
-
Ce paramètre est disponible depuis PHP 5 (PECL OCI8 1.1) et accepte les valeurs suivantes :
OCI_DEFAULT
,OCI_SYSOPER
etOCI_SYSDBA
. Si soit la constanteOCI_SYSOPER
, soit la constanteOCI_SYSDBA
est spécifiée, cette fonction tentera d'établir une connexion privilégiée en utilisant des identifiants externes. Les connexions privilégiées sont désactivées par défault. Pour les activer, vous devez définir l'option oci8.privileged_connect à On.PHP 5.3 (PECL OCI8 1.3.4) introduisent la valeur de mode
OCI_CRED_EXT
. Ce mode demande à Oracle d'utiliser une identification externe ou bien issue du système d'exploitation, qui doit être configurée dans la base de données. Le drapeauOCI_CRED_EXT
ne peut être utilisé qu'avec le nom d'utilisateur "/" associé à un mot de passe vide. L'option oci8.privileged_connect peut être définie à On ou Off.OCI_CRED_EXT
peut être combiné avec le modeOCI_SYSOPER
ou le modeOCI_SYSDBA
.OCI_CRED_EXT
n'est pas supporté sous Windows pour des raisons de sécurité.
Exemples
Exemple #1 Exemple avec oci_pconnect()
<?php
// Connexin au service XE (i.e. base de données) sur la machine "localhost"
$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";
?>
Voir la fonction oci_connect()pour plus d'exemples sur l'utilisation de ce paramètre.
Notes
Note: Depuis PHP 5.1.2 et PECL OCI8 1.1, la durée de vie ainsi que le nombre maximal de connexions persistantes Oracle par processus PHP peuvent être affinés en définissant les valeurs de configuration suivantes : oci8.persistent_timeout, oci8.ping_interval et oci8.max_persistent.
Voir aussi
- oci_connect() - Établit une connexion avec un serveur Oracle
- oci_new_connect() - Connexion au serveur Oracle en utilisant une seule connexion
Version en cache
15/11/2024 17:06:05 Cette version de la page est en cache (à la date du 15/11/2024 17:06:05) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-oci-pconnect.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.