Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP mysql_connect set wait_timeout

Es ist nicht gut, DB-Verbindungen für längere Zeit zu halten, weil die DB immer nur eine feste Anzahl von Verbindungen gleichzeitig bereitstellt; Wenn Sie eine für Ewigkeiten verwenden, bedeutet dies, dass Ihre DB weniger Kapazität hat, um andere Anfragen zu bearbeiten, selbst wenn Sie eigentlich nichts mit dieser Verbindung tun.

Ich schlage vor, die Verbindung zu unterbrechen, wenn das Programm sie vorerst nicht mehr verwendet, und sich erneut zu verbinden, wenn die Zeit gekommen ist, weitere DB-Arbeiten zu erledigen.

Darüber hinaus schützt diese Lösung Ihr Programm vor möglichen Datenbankausfallzeiten, dh wenn Sie Ihren DB-Server neu starten müssen (das passiert sogar im am besten unterstützten Netzwerk). Wenn Sie die Verbindung am Leben erhalten (dh ein DB-Ping gemäß den anderen Antworten), führt ein solches Ereignis dazu, dass Sie genau das gleiche Problem haben, das Sie jetzt haben. Mit einer ordnungsgemäß verwalteten Verbindung, die getrennt wird, wenn sie nicht benötigt wird, können Sie Ihren Daemon sicher laufen lassen, selbst wenn Sie eine geplante Ausfallzeit für Ihre Datenbank geplant haben. Solange es für die Dauer untätig bleibt, muss es nicht klüger sein.

(Nebenbei würde ich auch die Weisheit in Frage stellen, ein PHP-Programm zu schreiben, das kontinuierlich läuft; PHP ist für kurze Webanforderungen konzipiert. Es kann möglicherweise langfristige Daemon-Programme ausführen, aber es gibt bessere Tools für diesen Job.)