DRCP Connection Pooling
PHP de 5,3 (PECL OCI8 1.3) prend en charge la connexion de résident Oracle Database Pooling (DRCP). DRCP permet une utilisation plus efficace de la mémoire de la machine de base de données et offre une grande évolutivité. Non, ou minime, des modifications d'application sont nécessaires pour utiliser DRCP. DRCP convient aux applications qui se connectent à l'aide de quelques schémas de base de données et qui maintiennent les connexions de base de données ouvertes pour une courte période de temps. Les autres applications doivent utiliser les processus de serveur de base de données Dedicated par défaut d'Oracle ou utiliser des serveurs partagés. DRCP bénéficie des trois fonctions de connexion, mais offre la meilleure évolutivité lorsque les connexions sont créées avec oci_pconnect().
Pour que DRCP soit disponible dans OCI8, les bibliothèques client Oracle utilisées par PHP et la version de la base de données Oracle doivent avoir une taille de 11 g ou plus.
La documentation sur DRCP se trouve dans plusieurs manuels Oracle. Par exemple, reportez-vous à la section »Configuration du pool de connexions résidantes de la base de données dans la documentation Oracle pour plus d'informations sur l'utilisation. Un livre blanc DRCP contient des informations générales sur le DRCP.
Pour utiliser DRCP, compiler PHP avec le OCI8 1.3 (ou version ultérieure) et l'extension des bibliothèques Oracle 11g (ou version ultérieure), puis procédez comme suit:
As a privileged database administrator, use a program like SQL*Plus to start the connection pool in the database:
SQL> execute dbms_connection_pool.start_pool;
Optionally use dbms_connection_pool.alter_param() to configure DRCP settings. The current pool settings can be queried from the DBA_CPOOL_INFO view.
Update the connection strings used. For PHP applications that currently connect using a Network Connect Name like MYDB:
$c = oci_pconnect("myuser", "mypassword", "MYDB");
modify the tnsnames.ora file and add a (SERVER=POOLED) clause, for example:
MYDB = (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=myhost.dom.com)
(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=sales)
(SERVER=POOLED)))
Alternatively, modify the Easy Connect syntax in PHP and add :POOLED after the service name:
$c = oci_pconnect("myuser", "mypassword", "myhost.dom.com:1521/sales:POOLED");
Edit php.ini and choose a connection class name. This name indicates a logical division of the connection pool and can be used to isolate pooling for separate applications. Any PHP applications with the same user name and connection class value will be able to share connections in the pool, giving greater scalability.
oci8.connection_class = "MY_APPLICATION_NAME"
Run the application, connecting to the 11g (or later) database.
Cela ressemble à un excellent point de départ. Merci – magowan90
@ magowan90 mon plaisir! http://php.net/manual/fr/oci8.connection.php –
DRCP est destiné à l'évolutivité lorsque la machine hôte de la base de données n'a pas assez de mémoire pour gérer la charge de travail. Il n'y a rien dans la question de @ magowan90 pour indiquer que c'est le problème. –