In PHP ist die Verbindung zur MySQL -Datenbank eine häufige Aufgabe bei der Entwicklung von Webanwendungen. Wir können Datenbankverbindungen auf verschiedene Weise herstellen, und es ist eine klassische Möglichkeit, anhaltende Verbindungen mithilfe der Funktion mySQL_Connect () implementieren. In diesem Artikel wird detailliert analysiert, wie anhaltende Verbindungen von Datenbanken über die Funktion von MySQL_Connect () sowie dessen Arbeitsprinzip und praktischer Anwendung implementiert werden können.
Eine anhaltende Verbindung bedeutet, dass nach der Herstellung einer Verbindung nach der Ausführung des Skripts nicht geschlossen wird, aber bei der Warten auf die nächste Skriptanfrage wiederverwendet wird. Diese Methode kann den Overhead von häufigem Aufbau und Schließen von Verbindungen verringern und eignen sich besonders für Anwendungsszenarien mit mehr Anfragen. Im Gegensatz dazu besteht eine regelmäßige Verbindung darin, jedes Mal, wenn das Skript ausgeführt wird, eine neue Datenbankverbindung herzustellen und nach der Ausführung zu schließen.
In PHP kann die Funktion mysql_connect () verwendet werden, um eine anhaltende Verbindung herzustellen. Die grundlegende Syntax ist wie folgt:
<span><span><span class="hljs-title function_ invoke__">mysql_connect</span></span><span>(</span><span><span class="hljs-string">'hostname'</span></span><span>, </span><span><span class="hljs-string">'username'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span></span>'Hostname' : Die Host -Adresse des Datenbankservers, normalerweise Localhost oder IP -Adresse.
'Benutzername' : Der Benutzername, mit dem eine Verbindung zur Datenbank hergestellt wird.
'Passwort' : Das Kennwort, das dem Benutzernamen entspricht.
Der vierte Parameter True bedeutet, eine anhaltende Verbindung herzustellen.
Verbindungsschließmechanismus :
Normale Verbindung: Jedes Mal, wenn das Skript ausgeführt wird, wird die Verbindung geschlossen.
Persistente Verbindung: Selbst wenn das Skript ausgeführt wird, bleibt die Verbindung aktiv, damit nachfolgende Anfragen wiederverwendet werden.
Leistungsunterschiede :
Persistente Verbindungen verringern den Aufwand und die Zerstörung von Datenbankverbindungen, insbesondere für langjährige Webanwendungen oder hochverträgliche Anwendungen, mit einer besseren Leistung.
Normale Verbindungen erfordern, dass jedes Mal eine neue Verbindung erstellt wird, wenn eine normale Verbindung angefordert wird, was zu Leistungs Engpässen in hohen Parallelitätsumgebungen führen kann.
Die größten Vorteile von anhaltenden Verbindungen :
Effizienz: Reduzieren Sie die doppelte Aufstellung von Datenbankverbindungen.
Ressourcen sparen: Der Verbindungspool wiederverübt festgelegte Verbindungen für einen bestimmten Zeitraum.
Zunächst müssen wir sicherstellen, dass die persistente Verbindungsfunktion in der MySQL -Konfigurationsdatei aktiviert ist. Die folgenden Konfigurationen können in der Konfigurationsdatei von MySQL ( my.cnf oder my.ini ) überprüft werden:
<span><span><span class="hljs-section">[mysqld]</span></span><span>
skip-name-resolve
</span><span><span class="hljs-attr">wait_timeout</span></span><span> = </span><span><span class="hljs-number">28800</span></span><span>
</span><span><span class="hljs-attr">interactive_timeout</span></span><span> = </span><span><span class="hljs-number">28800</span></span><span>
</span></span>Resiver-NAME-RESOLVE : Deaktivieren Sie die DNS-Reverse-Auflösung, um DNS-Abfragen jedes Mal zu vermeiden, wenn Sie eine Verbindung herstellen.
Wait_timeout und interactive_timeout : Stellen Sie die Zeitüberschreitungszeit der Verbindung fest, um sicherzustellen, dass die Verbindung nicht zu früh schließt.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// verwendenmysql_connectEine anhaltende Verbindung herstellen</span></span><span>
</span><span><span class="hljs-variable">$link</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_connect</span></span><span>(</span><span><span class="hljs-string">'localhost'</span></span><span>, </span><span><span class="hljs-string">'root'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$link</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">'Could not connect: '</span></span><span> . </span><span><span class="hljs-title function_ invoke__">mysql_error</span></span><span>());
}
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Connected successfully!'</span></span><span>;
</span><span><span class="hljs-comment">// Andere Datenbankvorgänge...</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>In diesem Code ist der vierte Parameter von MySQL_Connect () auf True eingestellt, was darauf hinweist, dass eine anhaltende Verbindung erforderlich ist. Nachdem die Verbindung erfolgreich ist, kann der Datenbankvorgang weiterhin ausgeführt werden.
Sobald eine anhaltende Verbindung hergestellt ist, können regelmäßige Datenbankvorgänge durchgeführt werden. Wählen Sie beispielsweise eine Datenbank aus und führen Sie eine Abfrage aus:
<span><span><span class="hljs-title function_ invoke__">mysql_select_db</span></span><span>(</span><span><span class="hljs-string">'my_database'</span></span><span>, </span><span><span class="hljs-variable">$link</span></span><span>);
</span><span><span class="hljs-comment">// implementierenSQLAbfrage</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_query</span></span><span>(</span><span><span class="hljs-string">'SELECT * FROM users'</span></span><span>, </span><span><span class="hljs-variable">$link</span></span><span>);
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mysql_fetch_assoc</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>] . </span><span><span class="hljs-string">'<br>'</span></span><span>;
}
</span></span>Für anhaltende Verbindungen ist es normalerweise nicht erforderlich, die Verbindung manuell zu schließen, da sie aktiv und wiederverwendet bleibt. Wenn es jedoch besondere Bedürfnisse gibt, können Sie auch MySQL_CLOSE () für ein explizites Schließen aufrufen:
<span><span><span class="hljs-title function_ invoke__">mysql_close</span></span><span>(</span><span><span class="hljs-variable">$link</span></span><span>);
</span></span>Verbindungsbadgrenzen :
Wenn Sie persistente Verbindungen verwenden, kann der Verbindungspool der MySQL -Datenbank eine maximale Verbindungsgrenze haben. Wenn zu viele Datenbankverbindungen vorhanden sind, kann der Verbindungspool erschöpft sein.
Sitzungsstatusprobleme :
Eine anhaltende Verbindung speichert den Sitzungsstatus der letzten Verbindung, z. B. eine festgelegte Variable. Konflikte können auftreten, wenn mehrere Skripte von verschiedenen Sitzungseinstellungen abhängen.
Ressourcenbeschäftigung :
Obwohl anhaltende Verbindungen die Leistung verbessern können, müssen sie auch mit Vorsicht verwendet werden, als ob eine große Anzahl von Verbindungen nicht geschlossen wäre.
Sicherheitsprobleme :
Bei Verwendung anhaltender Verbindungen hat die Datenbankverbindung einen langen Lebenszyklus. Stellen Sie sicher, dass die Verbindungsinformationen (z. B. Benutzername und Passwort) nicht durchgesickert sind, um zu vermeiden, dass böswillige Benutzer anhaltenden Verbindungen missbrauchen.
Die persistente Verbindung, die über die Funktion mySQL_Connect () implementiert wird, kann den Aufwand des häufigsten Aufbaus und Zerstörens von Datenbankverbindungen effektiv reduzieren und eignen sich besonders für Anwendungsszenarien mit hoher Parallelität und häufigen Zugriff auf Datenbanken. Bei Verwendung anhaltender Verbindungen müssen Sie jedoch auch auf das Ressourcenmanagement, Sitzungskonflikte und andere Probleme achten, um sicherzustellen, dass die maximale Anzahl von Verbindungen im Datenbankverbindungspool die tatsächlichen Anforderungen entsprechen kann. Im Allgemeinen sind rationale Konfiguration und Verwendung anhaltender Verbindungen ein effektives Mittel zur Verbesserung der Leistung von PHP -Datenbankanwendungen.