In der PHP -Entwicklung ist es sehr wichtig, Verbindungsressourcen bei der Verbindung zu Datenbanken oder anderen Diensten vernünftig zu verwalten. Insbesondere wenn die durch die Verbindungsfunktion festgelegte Verbindung nicht korrekt geschlossen ist, kann dies zu einer Ressourcenleckage führen, die die Anwendungsleistung und -stabilität beeinflusst. In diesem Artikel wird ausführlich erklärt, wie die Konnektionsfunktion in PHP anmutig schließt, um potenzielle Ressourcen- und Leistungsprobleme zu vermeiden.
Ressourcenleckage bezieht sich auf den Fehler des Programms, um die Systemressourcen rechtzeitig nach der Verwendung des Systems (z. B. Datenbankverbindungen, Dateihandles und Netzwerkverbindungen) freizugeben, was zur Erschöpfung der Systemressourcen führt. Für PHP werden nicht abgelagerte Verbindungen Speicher- und Systemverbindungen einnehmen, wodurch nachfolgende Anfragen keine neue Verbindung hergestellt werden, die letztendlich zu Engpässen oder Systemabstürzen führt.
In PHP sind gemeinsame Verbindungsfunktionen:
MySQLI_Connect () —— für die MySQL -Datenbankverbindung.
pg_connect () —— für PostgreSQL -Datenbankverbindungen.
Benutzerdefinierte Verbindungsfunktion - kann eine Verbindungsfunktion für eine API oder einen Dienst sein.
Unabhängig von der Verbindung muss die Verbindung explizit oder implizit geschlossen werden.
<?php
$host = "m66.net";
$user = "username";
$password = "password";
$dbname = "test_db";
// Eine Verbindung herstellen
$conn = mysqli_connect($host, $user, $password, $dbname);
if (!$conn) {
die("Verbindung ist fehlgeschlagen: " . mysqli_connect_error());
}
// Eine Frage ausführen
$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);
// Verarbeitungsergebnisse
if ($result) {
while ($row = mysqli_fetch_assoc($result)) {
echo "Benutzername: " . $row['username'] . "<br>";
}
// Füllen Sie das Ergebnissatz frei
mysqli_free_result($result);
}
// Schließen Sie die Verbindung
mysqli_close($conn);
?>
Die wichtigsten Punkte hier sind:
Nachdem Sie die Ergebnisse der Datenbankabfrage verwendet haben, rufen Sie MySQLI_Free_Result () auf, um die Ressource für die Ergebnismenge zu veröffentlichen.
Rufen Sie nach Verwendung der Verbindung mySQLI_CLOSE () auf, um die Datenbankverbindung zu schließen und die Ressourcen zu veröffentlichen.
PDO schließt die Verbindung, wenn das Objekt standardmäßig zerstört wird, aber eine explizite Trennung ist klarer:
<?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 "Benutzername: " . $row['username'] . "<br>";
}
// Schließen Sie die Verbindung
$pdo = null;
} catch (PDOException $e) {
echo "Verbindung ist fehlgeschlagen: " . $e->getMessage();
}
?>
Nach dem Einstellen von $ pdo auf null wird die Verbindung geschlossen und die Ressource veröffentlicht.
Ressourcenerschöpfung : Die Anzahl der Verbindungen steigt weiter und eine neue Verbindungsanforderung wird abgelehnt, nachdem das Serverlimit erreicht ist.
Leistungsverschlechterung : Erhöhter Speicherverbrauch, was zu einer langsameren Reaktion führt.
Sicherheitsrisiko : Veröffentlichte Verbindungen können dazu führen, dass der Verbindungspool erschöpft ist und die Systemstabilität beeinflusst.
Ignorieren Sie niemals die Bedeutung des Verbindungsverschlusss.
Verwenden Sie integrierte Funktionen wie MySQLI_CLOSE () oder auf NULL eingestellt, um sicherzustellen, dass die Verbindung nicht verbunden ist.
Lösen Sie die Ergebnisressource nach der Verarbeitung des Ergebnisses.
Stellen Sie für benutzerdefinierte Verbindungsfunktionen sicher, dass das Dokument eine Schnittstelle zur Schließung der Verbindung bietet und im Programm aufgerufen wird.
Durch rationales Verwalten verbundener Ressourcen kann die Anwendungsleistung verbessert und der stabile Betrieb des Systems gewährleistet werden.