Maison développement back-end Problème PHP Comment utiliser PDO pour fermer la connexion en PHP

Comment utiliser PDO pour fermer la connexion en PHP

Jul 05, 2021 pm 03:43 PM
pdo 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 ?

Comment utiliser PDO pour fermer la connexion en PHP

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;
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

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.

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

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.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

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

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

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

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

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.

CakePHP travaillant avec la base de données CakePHP travaillant avec la base de données Sep 10, 2024 pm 05:25 PM

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.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

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

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

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

See all articles