Comment utiliser PDO pour fermer la connexion en PHP
Dans le développement moderne, l'utilisation générale des frameworks nous amènera à ignorer l'encapsulation sous-jacente, et la plupart des frameworks utilisent par défaut PDO pour les opérations de base de données. Alors, savez-vous comment PDO ferme la connexion de données ?
Description officielle
Pour fermer la connexion, vous devez détruire l'objet pour vous assurer que toutes les références restantes à celui-ci sont supprimées. Vous pouvez attribuer une valeur NULL à la variable objet. Si vous ne le faites pas explicitement, PHP fermera automatiquement la connexion à la fin du script.
$pdo = new PDO('mysql:host=127.0.0.1; port=3306; dbname=blog_test', 'root', ''); $pdo = null;
La documentation officielle est très claire, c'est-à-dire qu'il suffit d'attribuer NULL à l'objet PDO. Mais les choses sont-elles vraiment si simples ?
Test réel
Faisons le test comme celui-ci. Dans des circonstances normales, nous ne fermerons pas la connexion à la base de données directement après l'avoir ouverte, mais devrons effectuer certaines opérations.
$pdo = new PDO('mysql:host=127.0.0.1;port=3306;dbname=blog_test', 'root', ''); $stmt = $pdo->prepare('SELECT * FROM zyblog_test_user'); $stmt->execute(); $pdo = null; sleep(60);
Après avoir exécuté le code ci-dessus, nous utilisons show full processlist ; dans la base de données pour afficher le processus de connexion. Nous constaterons que la connexion actuelle n'est pas fermée immédiatement, mais ne sera fermée que 60 secondes plus tard, c'est-à-dire après. l'exécution de la page est terminée. Il semble que $pdo = null; ne s'est pas exécuté correctement.
En fait, cette situation a été expliquée dans les documents officiels, mais les gens n'y prêtent peut-être pas attention. [L'objet doit être détruit pour garantir que toutes les références restantes à celui-ci sont supprimées]. Dans le code ci-dessus, la fonction d'instruction SQL précompilée $stmt appelle la méthode dans l'objet $pdo, créant une relation de dépendance de référence entre elles. dans ce cas, donner directement $pdo = null n'a aucun effet, nous devons également attribuer $stmt à null.
$pdo = new PDO('mysql:host=127.0.0.1;port=3306;dbname=blog_test', 'root', ''); $stmt = $pdo->prepare('SELECT * FROM zyblog_test_user'); $stmt->execute(); $stmt = null; $pdo = null; sleep(60);
mysqli test
Y aura-t-il donc ce problème lors de l'utilisation du composant d'extension par défaut de mysqli, c'est-à-dire en utilisant close() dans l'objet mysqli pour fermer la connexion à la base de données ? Ou testez-le directement avec du code. (L'extension mysql est obsolète et n'est pas recommandée. Si vous souhaitez encapsuler vous-même la classe d'opération de base de données ou écrire une petite démo, il est préférable d'utiliser mysqli)
$conn = new mysqli('127.0.0.1', 'root', '', 'blog_test'); $result = $conn->query('SELECT * FROM zyblog_test_user'); $stmt = $conn->prepare("SELECT * FROM zyblog_test_user"); $stmt->execute(); $conn->close(); sleep(60);
Après avoir exécuté le code ci-dessus, nous ne verrons pas le processus de connexion dans la base de données Si vous voyez la connexion en cours d'exécution, cela signifie que l'appel de la méthode close() dans mysqli peut directement fermer immédiatement la connexion à la base de données.
Résumé
En fait, le contenu d'aujourd'hui est également l'information contenue dans une note sur le document officiel concernant la connexion à la base de données. Un maître a découvert ce problème il y a longtemps et l'a partagé, mais la plupart des gens ne connaissent pas du tout ce problème, et beaucoup de gens ne savent même pas que PDO peut fermer la connexion à la base de données.
Bien que le framework nous apporte de la commodité, il résume si bien beaucoup de choses que de nombreux amis ne se soucient pas du contenu sous-jacent. Cependant, lorsque vous passez à un niveau supérieur, ces contenus sous-jacents peuvent souvent vous gêner.
Apprentissage recommandé : Tutoriel vidéo php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds



Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

Travailler avec la base de données dans CakePHP est très simple. Nous comprendrons les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans ce chapitre.

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.
