Kann man Datenbankverbindungen zwischenspeichern, wenn man PHP wie in einem J2EE-Container verwendet? Wenn das so ist, wie?Verbindungspooling in PHP
Antwort
Sie können Verbindungspools nicht manuell instanziieren.
Aber Sie können das "eingebaute" Verbindungspooling mit der mysql_pconnect Funktion verwenden.
Ich nehme an, Sie verwenden mod_php, richtig?
Wenn eine PHP-Datei fertig ist, wird der gesamte Zustand beendet, so dass es keine Möglichkeit gibt (im PHP-Code), Verbindungspooling durchzuführen. Stattdessen müssen Sie sich auf Erweiterungen verlassen.
Sie können mysql_pconnect, so dass Ihre Verbindungen nicht nach dem Ende der Seite geschlossen werden, so dass sie in der nächsten Anfrage wiederverwendet werden.
Dies ist möglicherweise alles, was Sie benötigen, aber dies ist nicht das gleiche wie Verbindungspooling, da es keine Möglichkeit gibt, die Anzahl der Verbindungen anzugeben, die geöffnet werden sollen.
Prost.
Kann die Verbindung von verschiedenen Benutzern wiederverwendet werden? Wenn ja, warum sollte das Handbuch so konfiguriert werden, dass wir MySQL so konfigurieren, dass zu viele Verbindungen vermieden werden? – omg
Es gibt keine Verbindung Pooling in PHP.
mysql_pconnect und Verbindung Pooling sind zwei verschiedene Dinge. Es gibt viele Probleme im Zusammenhang mit mysql_pconnect
und zuerst sollten Sie das Handbuch lesen und sorgfältig verwenden, aber dies ist nicht Verbindungspooling.
Verbindungspooling ist eine Technik, bei der der Anwendungsserver die Verbindungen verwaltet. Wenn die Anwendung eine Verbindung benötigt, fragt sie den Anwendungsserver danach, und der Anwendungsserver gibt eine der gepoolten Verbindungen zurück, wenn es eine freie Verbindung gibt. gehen Sie bitte über folgenden Link
Wir können für diese Verbindung Skalierung in PHP tun: http://www.oracle.com/technetwork/articles/dsl/white-php-part1-355135.html
Also keine Connection-Pooling in PHP.
Wie Julio sagte, Apache gibt alle Ressourcen frei, wenn die Anfrage für die aktuellen Anfragen endet. Sie können mysql_pconnect verwenden, aber Sie sind mit dieser Funktion eingeschränkt und Sie müssen sehr vorsichtig sein. Eine andere Möglichkeit besteht darin, ein Singleton-Muster zu verwenden, aber nichts davon ist ein Pooling.
Dies ist ein guter Artikel: http://blogs.oracle.com/opal/2007/01/highly_scalable_connection_poo.html
Lesen Sie auch diese ein http://www.apache2.es/2.2.2/mod/mod_dbd.html
Kein Verbindungsaufbau? Beeindruckend. – Justin
"Die Verbindung zum SQL-Server wird nicht geschlossen, wenn die Ausführung des Skripts beendet wird." - http://www.php.net/manual/en/function.mysql-pconnect.php – RandomSeed
Arbeitslink für das Orakel-Blog: https://blogs.oracle.com/opal/entry/highly_scalable_connection_poo –
Persistente Verbindungen sind nichts wie Connection Pooling. Eine persistente Verbindung in PHP wird nur dann wiederverwendet, wenn Sie mehrere db-Verbindungen innerhalb desselben Anfrage-/Skriptausführungskontexts herstellen. In den meisten typischen Web-Dev-Szenarios werden Sie Ihre Verbindungen viel schneller maximieren, wenn Sie mysql_pconnect verwenden, da Ihr Skript keine Möglichkeit hat, bei Ihrer nächsten Anfrage einen Verweis auf offene Verbindungen zu erhalten. Die beste Möglichkeit, DB-Verbindungen in PHP zu verwenden, besteht darin, eine Singleton-Instanz eines db-Objekts zu erstellen, so dass die Verbindung im Kontext der Skriptausführung wiederverwendet wird. Dies erfordert immer noch mindestens 1 db connect pro Anfrage, aber es ist besser als mehrere db connects per reqeust.
Es gibt kein echtes DB Verbindungspooling in PHP aufgrund der Natur von PHP.PHP ist kein Anwendungsserver, der zwischen Requests Platz nehmen und Referenzen auf einen Pool offener Verbindungen verwalten kann, zumindest nicht ohne einen großen Hack. Ich denke in der Theorie könnten Sie einen app-Server in PHP schreiben und es als ein Befehlszeilenskript ausführen, das nur dort im Hintergrund sitzen würde und eine Reihe von db-Verbindungen offen halten und Verweise auf sie an Ihre anderen Skripte weitergeben würde, aber ich tue es nicht Wissen Sie, ob das in der Praxis möglich wäre, wie Sie die Referenzen von Ihrem Kommandozeilenskript an andere Skripte weitergeben würden, und ich bezweifle, dass es auch dann gut abschneidet, wenn Sie es schaffen könnten. Jedenfalls ist das meistens Spekulation. Ich habe gerade den Link bemerkt, den ein anderer Benutzer an ein Apache-Modul gesendet hat, um das Verbindungs-Pooling für Prefork-Server wie php zu ermöglichen. Sieht interessant aus: https://github.com/junamai2000/mod_namy_pool#readme
"Die Verbindung zu Der SQL-Server wird nicht geschlossen, wenn die Ausführung des Skripts beendet ist. " - http://www.php.net/manual/en/function.mysql-pconnect.php – RandomSeed
Dies ist falsch auf PHP-FPM und Apache/mod_php. –
"Der beste Weg, DB-Verbindungen in PHP zu verwenden, besteht darin, eine Singleton-Instanz eines db-Objekts zu erstellen, so dass die Verbindung im Kontext der Skriptausführung wiederverwendet wird." - Das ist die goldene Gans, nach der ich suche. Gute Möglichkeit, genau zu erklären, wo und warum das Singleton nützlich wäre! – samazi
Sie können MySQLi verwenden.
Für mehr Informationen, nach unten scrollen zu Verbindung Pooling Abschnitt @http://www.php.net/manual/en/mysqli.quickstart.connections.php#example-1622
Hinweis, dass Connection Pooling auf dem Server auch abhängig ist (das heißt Apache) und deren Konfiguration.
- 1. Verbindungspooling in Slick?
- 2. keine geeignete Treiberausnahme in Verbindungspooling
- 3. Verbindungspooling in .NET/SQL Server?
- 4. Verbindungspooling mit Apache DBCP
- 5. JDBC-Verbindungspooling: Verbindungswiederverwendung?
- 6. Verbindungspooling mit PostgreSQL JDBC
- 7. LDAP-Verbindungspooling mit Federsicherheit
- 8. Setup Verbindungspooling in JSP/Servlets-Anwendung auf MVC basiert?
- 9. C3p0 Verbindungspooling für jpa in persistence.xml funktioniert nicht?
- 10. Wie richte ich das DBX-Verbindungspooling in Code ein?
- 11. Wie verwende ich Verbindungspooling in cxf jaxrs webclient
- 12. Java Verbindungspooling (JNDI) nicht affter eine halbe aday arbeiten
- 13. Verbindungspooling: Wie IDisposable korrekt zu TCP-Verbindung zurück zu Pool
- 14. Verbindungspooling in Node-Monodb-native, wenn db.open und db.close zu rufen
- 15. Wie zu überwachen Verbindungspooling für. NET MySQL Data Connector in IIS
- 16. Wie erzwingen Sie eine SqlConnection, um physisch zu schließen, während Verbindungspooling verwendet?
- 17. Verbindungspooling für einen Rich-Client, der direkt auf eine Datenbank zugreift
- 18. Mongodb Verbindungspooling-Problem mit Multi-Core-System für eine MEAN-Stack-Anwendung
- 19. PHP Echo in PHP Skript
- 20. Einbetten von PHP in PHP
- 21. Verwenden von MongoDB mit PHP ohne ODM
- 22. einschließlich PHP in HTML-Code in PHP
- 23. in PHP
- 24. in php
- 25. PHP - HTML-Webseiten in PDF konvertieren PHP
- 26. Warum gibt es in PHP PHP nicht?
- 27. nicht möglich, PHP-Variable in PHP-Code
- 28. Get Smarty Array Wert in PHP {php}
- 29. php - mit optionalen Argumente in PHP
- 30. Modal in PHP mit PHP include
Wie wäre es damit? https://github.com/junamai2000/mod_namy_pool – nam
Haben Sie sich persistente Verbindungen mit [mysql_pconnect()] (http://www.php.net/mysql_pconnect) angesehen? –