Pour obtenir une performance ibm_db2 acceptable sur tout site soumis à une forte demande de navigation (nombreux « hits » par seconde), il vous faudra utiliser db2_pconnect(). Le « p » dans db2_pconnect() signifie connexion persistante, indiquant simplement que cette connexion ne se fermera pas tant que le site
db2_pconnect ou db2_connect ?
Apache sera actif (quelle que soit l’application PHP qui utilise la connexion persistante). A l’inverse, db2_connect() ouvrira une connexion chaque fois qu’une application PHP voudra utiliser la base de données et fermera la connexion à la sortie. Par conséquent, db2_connect sollicite énormément les ressources i5 avec des ouvertures/fermetures de base de données à une vitesse de demande de requête subseconde de la part des clients du navigateur (aïe !), tandis que les demandes ultérieures adressées à db2_pconnect contournent tout le travail de connexion db2.
Vous ne pouvez pas mélanger db2_connect et db2_ pconnect sous la même connexion de profil utilisateur, car le db2_pconnect risque de consommer toutes les connexions et de les garder en otages pendant la durée de vie du site Apache. La fonction persistante de ibm_db2 est indispensable pour la performance, mais elle a son prix : savoir planifier votre stratégie de site ibm_db2 pour éviter que la totalité du site ne devienne insensible aux requêtes db2.
Vous vous en doutez peut-être, db2_pconnect() est une connexion stateful ; donc elle viole les règles de programmation stateless Apache. DB2_I5_NAMING_ON s’attend à ce que toutes les instructions SQL aient la syntaxe library/file (native/system naming) et DB2_I5_NAMING_OFF s’attend à ce que toutes les instructions SQL aient library.name (SQL naming). En raison des règles de connexions CLI, nous ne pouvons pas faire alterner les deux modes pendant qu’une connexion est active (donc, db2_pconnect est toujours actif).
L’application Acme PHP est configurée pour s’approprier la connexion NOBODY du profil par défaut (config.php), avec la conséquence suivante : bon nombre de nos autres scripts de test (ou autre code db2 de production) qui essaieront de mélanger db2_pconnect/connect ("", "", "") et db2_connect("","",""), array("i5_naming"=>DB2_I5_ NAMING_ON)) échoueront. (Ou bien, si votre autre application PHP tient déjà en otage la connexion persistante, l’application Acme échouera.) La réponse simple et courte à ce problème consiste à choisir simplement des profils différents pour chaque classe générale de connexion persistante ibm_db2 stateful : un pour DB2_I5_NAMING_ON et un autre pour DB2_I5_ NAMING_OFF. Je recommande d’avoir au moins deux profils utilisateurs *USER qui ne peuvent pas se connecter (sign on) au System i (comme NOBODY et NOBODYP) pour exécuter les deux styles de db2_pconnect pour les applications PHP, puis de penser à se connecter avec le profil correspondant.
Remarque: Toute violation stateless Apache est un véritable pacte avec le diable : il faut en payer le prix. D’ailleurs, du point de vue d’Apache, changer le code RPG est une meilleure solution. Donc, si vous devez mélanger le nommage SQL et system/native et des listes de bibliothèques, choisissez avec beaucoup de soin la stratégie de connexion persistante ibm_db2 de votre site (db2_pconnect est un outil puissant mais dangereux entre les mains de votre spécialiste Web).
Téléchargez cette ressource
Sécuriser Microsoft 365 avec une approche Zero-Trust
Découvrez comment renforcer la cyber-résilience de Microsoft 365 grâce à une approche Zero-Trust, une administration granulaire et une automatisation avancée. La technologie Virtual Tenant de CoreView permet de sécuriser et simplifier la gestion des environnements complexes, tout en complétant vos stratégies IAM, y compris dans les secteurs réglementés.
Les articles les plus consultés
- Afficher les icônes cachées dans la barre de notification
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
- IBM i célèbre ses 25 ans
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Cybersécurité Active Directory et les attaques de nouvelle génération
Les plus consultés sur iTPro.fr
- IA de confiance : le facteur clé pour rentabiliser les projets d’entreprise
- Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
- Hôpitaux virtuels : renforcer le système de santé français grâce au numérique
- Cybercriminalité bancaire : l’IA industrialise les attaques en 2026
Articles les + lus
Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
Model Context Protocol : le contexte, grand oublié du débat
Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
Couchbase lance AI Data Plane pour industrialiser l’IA agentique
Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
À la une de la chaîne Tech
- Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
- Model Context Protocol : le contexte, grand oublié du débat
- Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
- Couchbase lance AI Data Plane pour industrialiser l’IA agentique
- Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
