5 Stimmen

Wie man eine MySQL-Verbindung in PHP am Leben erhält

Ich habe ein Skript, das über Tabellen und Felder iteriert und eine Suche und Ersetzung durchführt. Das Skript dauert etwa 4 Minuten, um abzuschließen. Die Datenbank ist ungefähr 1,5 GB groß.

Das Problem ist, dass ich auf mysteriöse Weise die Datenbankverbindung verliere. Ich verwende ADODB, um eine Verbindung zu mySQL herzustellen. Die Datenbankverbindung wird am Anfang geöffnet und bleibt während der gesamten Dauer des Skripts geöffnet.

Das Problem verschwindet, wenn ich den folgenden Code verwende:

if ($rowCount % 100000 == 0) {
    $db->Execute('USE ' . $db->database);
}

Ich bin kein Fan dieser Lösung!

Alle Vorschläge/Erklärungen/Diskussionen, die mir helfen, nicht mehr den Kopf zu kratzen, wären sehr willkommen!

1 Stimmen

Ist es Ihr Server oder haben Sie die Möglichkeit, dessen Konfiguration zu bearbeiten? Sie könnten auf mysql.connect_timeout stoßen.

0 Stimmen

Set_time_limit(0); Ist es nicht Ihr PHP-Skript, das abläuft?

0 Stimmen

Der Skript läuft auf vielen Servern. Einige davon habe ich unter Kontrolle. Es wäre schön, jede Konfiguration innerhalb des Skripts zu handhaben. @Eddie – das Skript läuft nicht ab.

2voto

StampyCode Punkte 6069

Das Wort, nach dem Sie suchen, lautet 'persistent', und die Antwort, die Sie suchen, finden Sie hier:

mysqli persistent connection

1voto

Mads Ohm Larsen Punkte 2955

Sie könnten mysql_pconnect(); verwenden oder genauso für ADODB $conn->PConnect(); um eine persistente Verbindung zu erstellen

0 Stimmen

Es ist weder notwendig noch wünschenswert, persistente Verbindungen zu verwenden, um eine Verbindung innerhalb einer Seite aufrechtzuerhalten. Persistente Verbindungen sind im Allgemeinen nicht erwünscht.

0 Stimmen

@MarkR Haben Sie noch weitere Vorschläge, wie man die Verbindung aufrechterhalten kann?

0 Stimmen

mysql_pconnect ist jetzt veraltet - bitte verwenden Sie eine Alternative.

1voto

Livia Martinez Punkte 145

Verwenden Sie mysqli::ping(), um festzustellen, ob die Verbindung aktiv ist. Verbinden Sie sich erneut, wenn nicht.

Überprüft, ob die Verbindung zum Server funktioniert. Wenn die Verbindung unterbrochen wurde und die globale Option mysqli.reconnect aktiviert ist, wird automatisch eine erneute Verbindung versucht.

Diese Funktion kann von Clients verwendet werden, die längere Zeit inaktiv sind, um zu überprüfen, ob der Server die Verbindung geschlossen hat und bei Bedarf eine erneute Verbindung herzustellen.

0voto

Amir Fo Punkte 3901

Sie können eine dieser Methoden verwenden, um eine dauerhafte Verbindung zu MySQL herzustellen:

Mysqli

Versuchen Sie es mit mysqli_connect() und dem Präfix p: für den Hostnamen.

PDO

Versuchen Sie es mit PDO::__construct() und PDO::ATTR_PERSISTENT als Treibervariante.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X