Position actuelle: Accueil> Derniers articles> Comment fermer avec élégance la fonction de connexion en PHP pour éviter les problèmes de fuite des ressources et de performances?

Comment fermer avec élégance la fonction de connexion en PHP pour éviter les problèmes de fuite des ressources et de performances?

M66 2025-07-29

Dans le développement de PHP, il est très important de gérer raisonnablement les ressources de connexion lors de la connexion à des bases de données ou à d'autres services. Surtout si la connexion établie via la fonction de connexion n'est pas fermée correctement, elle peut entraîner une fuite de ressources, ce qui affectera les performances et la stabilité de l'application. Cet article expliquera en détail comment fermer gracieusement la fonction de connexion en PHP pour éviter les problèmes potentiels de ressources et de performances.


1. Quelles sont la fuite des ressources et ses dangers?

La fuite des ressources fait référence à l'échec du programme à publier les ressources système à temps après avoir utilisé le système (tels que les connexions de base de données, les poignées de fichiers et les connexions réseau), entraînant l'épuisement des ressources système. Pour PHP, les connexions non clôturées occuperont les connexions de mémoire et système, ce qui entraînera des demandes ultérieures pour établir une nouvelle connexion, ce qui entraînera éventuellement des goulots d'étranglement de performances ou des accidents du système.


2. Méthodes de connexion de connexion communes en php

En PHP, les fonctions de connexion communes sont:

  • mysqli_connect () —— pour la connexion de la base de données MySQL.

  • PG_Connect () —— Pour les connexions de la base de données PostgreSQL.

  • Fonction de connexion personnalisée - peut être une fonction de connexion pour une API ou un service.

Quelle que soit la connexion, la connexion doit être fermée explicitement ou implicitement.


3. Comment fermer la connexion gracieusement?

3.1 Utilisez MySqli comme exemple

 <?php
$host = "m66.net";
$user = "username";
$password = "password";
$dbname = "test_db";

// Établir une connexion
$conn = mysqli_connect($host, $user, $password, $dbname);

if (!$conn) {
    die("Échec de la connexion: " . mysqli_connect_error());
}

// Exécuter une requête
$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);

// Résultats de traitement
if ($result) {
    while ($row = mysqli_fetch_assoc($result)) {
        echo "nom d&#39;utilisateur: " . $row['username'] . "<br>";
    }
    // Libérez l&#39;ensemble de résultats
    mysqli_free_result($result);
}

// Fermer la connexion
mysqli_close($conn);
?>

Les points clés ici sont:

  • Après avoir utilisé les résultats de la requête de la base de données, appelez mysqli_free_result () pour publier la ressource SET de résultats.

  • Après avoir utilisé la connexion, appelez mysqli_close () pour fermer la connexion de la base de données et libérer les ressources.

3.2 Utilisez l'OPD comme exemple

L'OPD ferme la connexion lorsque l'objet est détruit par défaut, mais la déconnexion explicite est plus claire:

 <?php
$dsn = "mysql:host=m66.net;dbname=test_db;charset=utf8mb4";
$username = "username";
$password = "password";

try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $stmt = $pdo->query("SELECT * FROM users");

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo "nom d&#39;utilisateur: " . $row['username'] . "<br>";
    }

    // Fermer la connexion
    $pdo = null;
} catch (PDOException $e) {
    echo "Échec de la connexion: " . $e->getMessage();
}
?>

Après la définition de $ PDO à NULL , la connexion sera fermée et la ressource sera publiée.


4. Problèmes qui peuvent être causés par le fait de ne pas fermer la connexion

  • Épuisement des ressources : le nombre de connexions continue d'augmenter et une nouvelle demande de connexion est refusée après la limite du serveur atteint.

  • Dégradation des performances : utilisation accrue de la mémoire, entraînant une réponse plus lente.

  • Disque de sécurité : les connexions inédites peuvent entraîner l'épuisement du pool de connexions et affecter la stabilité du système.


5. Résumé

  • N'ignorez jamais l'importance de la fermeture des connexions.

  • Utilisez des fonctions intégrées telles que mysqli_close () ou définissez sur NULL pour s'assurer que la connexion est déconnectée.

  • Libérez la ressource SET de résultats après le traitement du résultat.

  • Pour les fonctions de connexion personnalisées, assurez-vous que le document fournit une interface pour fermer la connexion et est appelé dans le programme.

En gérant rationnellement les ressources connectées, les performances de l'application peuvent être améliorées et le fonctionnement stable du système peut être assuré.