| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Diskussion: wozu mysql_close()? im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hallo, ich frage mich schon seit längerem wozu es die PHP Function mysql_close() gibt. Geht es nur um die ...
![]() |
| | #1 (permalink) |
| Anzeige Hallo, ich frage mich schon seit längerem wozu es die PHP Function mysql_close() gibt. Geht es nur um die Schönheit und um sauberen Code oder hat es auch irgendwelche anderen Vorteile von denen ich nichts weiss? Ich hoffe mir kann geholfen werden, Gruß MorbZ | |
| | |
| | #2 (permalink) |
| Wenn du kein mysql_close() machst, dann bleibt beim Server die Verbindung zum Client immer noch offen, selbst wenn der Client schon geschlossen wurde. Bei einer Seite mit 5 Zugriffen/Tag ist das wohl ziemlich egal, stell dir das allerdings hier im Forum oder gar bei großen Seiten á la amazon vor, da würden die Server reihenweise krepieren weil keine Bandbreite mehr zur Verfügung steht weil immer noch Pipelines offen sind die nicht mehr genutzt werden. Sicher geht es auch um schönen Code, aber gerade wenn das keine Pimperlseite ist oder der Server sowieso schon schwach ist, dann braucht man das unbedingt. Edit: Nach einer Zeit wird natürlich vom Server aus die Verbindung getrennt, das kann aber ne halbe Std sein. Und in der Zeit wird nur die Servergeschwindigkeit (unnötig) minimiert | |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Senior Member | Der Befehl schließ ja die Verbindung zum MYSQL-Server. Aber wenn nicht-persistente Verbindungen genutzt werden, werden alle Datenbankverbindungen am Ende des Scriptes automatisch geschlossen. Vielleicht ist der Befehl dann ganz nützlich, wenn das Script keine richtige Fehlerbehandlung hat und einer Endlosschleife zum Opfer wird, dann besteht die Verbindung zur Datenbank weiter. ![]() Das würde zwar nicht unbedingt so oft vorkommen, aber ich denke mal das der Befehl eingefügt wird hat Gründe für die Sicherheit, damit Niemand so richtig an die Datenbestände der Datenbank rankommt, falls an einer anderen Stelle im Script eine Sicherheitslücke gibt. Ich selbst weiß nicht unbedingt, wie es mit der Sicherheit von PHP aussieht, aber ich denke mal schon das man sich in PHP-Scripts irgendwie reinmogeln kann und Schaden anrichten kann oder sensible Daten erhaschen könnte. Den Gedanke habe ich aber nur, da ich weiß das es Leute gibt und Themen die sich mit der Sicherheit von PHP und SQL auseinandersetzen. Wie es genauer aussieht, kann dir sicher einer von unseren SQL- oder PHP- Gurus sagen. @RemoteC Falsch, die Verbindung zum Server wird gekappt wenn das Script zuende ist. |
| | |
| | #4 (permalink) | |
| Zitat:
Und ich dachte schon, er hätte einmal etwas sinnvolles gesagt und ich habe mir das auch noch gemerkt | ||
| | |
| | #5 (permalink) | ||
| Senior Member | Zitat:
"Wenn nicht-persistente Verbindungen genutzt werden, werden alle Datenbankverbindungen am Ende des Scripts automatisch geschlossen. Der Aufruf von myssql_close() ist dann nicht notwendig." Ich verstehe das so, das es im Prinzip keine persistente Verbindungen gibt, denn da müsste man mit den Daten ständig arbeiten müssen und folglich noch das Script laufen muss um das zu gewährleisten. Aber wenn dir das ein Prof. erzählt hat, muss das schon irgendwie auf der einen Seite stimmen. Warten wir einfach mal unsere PHP und SQL - Gurus ab. | ||
| | |
| | #6 (permalink) | |
| Moderator ![]() | Wieso Gurus, ein Blick in die Doku reicht: Zitat:
| |
| | |
| | #7 (permalink) |
| Registriert seit: 26.06.06 ![]() Likes: 0 | Hehe, es lebe GuruTFM! ..aber ich muss zugeben, ich wusste das auch nicht mehr - obwohl ichs extra mal nachgelesen hatte, weil ich mir dieselbe Frage gestellt hatte.. |
| | |
| | #8 (permalink) | ||
| Senior Member | Zitat:
| ||
| | |
| | #9 (permalink) |
| Registriert seit: 26.05.06 ![]() Likes: 0 | mysql_close() bringt nur was, bei scripten in denen irgentwann keine Datenbank abfragen stattfinden. z.b. ein gaestebuch, alle daten holen, verbindung schließen und erst dann die daten aus der DB verarbeiten. so spart man bei vielen besuchern (aber auch nur dann) bandbreite und man kann natürlich seine scripte auch auf geschwindigkeit optimieren. andere gruende waeren mir unbekannt. mfg coderinblack |
| | |
| | #10 (permalink) | |
| Moderator ![]() | coderinblack: Sprichst du vom Caching von DB-Abfragen? Ansonsten wüsste ich nicht, wo darin die Optimierung von Skripten liegen könnte, geschweige denn eine Einsparung von Bandbreite (zumal das DBMS in den meisten Fällen auf dem localhost liegt). Und bei einem selbst gebastelten Cache spielt es dann auch keine Rolle, ob da irgendwo ein mysql_close() drin steht ![]() Prometheus: Zitat:
| |
| | |
| | #11 (permalink) |
| Member of Honour ![]() Registriert seit: 07.12.04 ![]() Likes: 256 | Vielleicht, überlegt ihr mal welche Vorteile es hat eine ungenutzte Datenbankverbindung bis zum Ende des Skriptes offenzulassen? Ausser Schonung der Tastatur fällt mir keiner ein. Ansonsten sehe ich offene Verbindungen immer als Risiko. Gruss
__________________ Die deutsche Rechtschreibung ist Freeware, daher darf man sie kostenlos nutzen. Allerdings ist sie nicht Open Source, dies bedeutet man darf sie nicht verändern oder in veränderter Form veröffentlichen. |
| | |
| | #12 (permalink) | |
| Moderator ![]() | Zitat:
Es mag für ein einzelnes Skript mit einer Abfrage deutlich sein, dass danach nix mehr kommt. Aber bei größeren Projekten kann man nicht bei jeder Abfrage mit Sicherheit sagen, dass dies in jedem Fall die letzte sein wird. Und vor jeder Datenbankabfrage eine Verbindung zu öffnen und sie danach wieder zu schließen ist auch nicht gerade performant. Eine Sicherheitslücke ist eine offene Datenbankverbindung jedenfalls nicht. Sicherheitsrelevant wird es erst dann, wenn die Verbindung auch genutzt wird, und darauf muss man so oder so achten. | |
| | |
| | #13 (permalink) | |
| Member of Honour ![]() Registriert seit: 07.12.04 ![]() Likes: 256 | Zitat:
2. Nachteil: ein erneutes mysql_connect() im Skript nutzt nicht die offene Verbindung, sondern stellt eine neue Verbindung her! Gerade bei grossen Projekten, wo unter Umständen auch noch mit unterschiedlichen Rechten auf Datenbanken zugegriffen wird, sind dann mehrere Verbindungen offen. btw. Ich weiss auch bei meinen grösseren Skripten wann keine Datenbankverbindung mehr nötig ist. Da steht dann immer mysql_close() ![]() Gruss
__________________ Die deutsche Rechtschreibung ist Freeware, daher darf man sie kostenlos nutzen. Allerdings ist sie nicht Open Source, dies bedeutet man darf sie nicht verändern oder in veränderter Form veröffentlichen. | |
| | |
| | #14 (permalink) | |||
| Moderator ![]() | Zitat:
Zitat:
Zitat:
Aber nunja, jeder nach seiner façon. Ab einer bestimmten Projektgröße sollte man lieber sowieso auf Datenbankabstraktionen wie DB::QueryTool aus PEAR o.ä. zurückgreifen | |||
| | |
| | #15 (permalink) |
| sieh es mal so: du hast ein großes script, dieses holt sich die daten und schließt dann die verbindung. Die Daten werden aufwendig weiter verarbeitet, das ganze dauert eine sekunde. nun hast du z.b. 60 Aufrufe pro sekunde auf der seite, das würde dann 60 offene verbindungen machen. Ich hab schon fälle gesehen wo aber schon nach 10 verbindungen dicht gemacht wird. Wenn nun nach dem Holen der Daten (für das beispiel mal 0.1sek angenommen) die Verbindung geschlossen wird so hast du nur noch durchschnittlich 6 offene verbindungen, was dir in die richtung etwas mehr platz verschafft. | |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| wozu schlüssel bei truecrypt | stefan19652 | Cryptography & Encryption | 4 | 11.10.08 15:23 |
| Wozu dienen Dienste wie lix.in? | mcjack | Internet Allgemein | 5 | 01.01.08 09:47 |
| WOzu IP-Adresse | C++ | (In)security allgemein | 8 | 10.08.05 23:16 |
| Wozu 2. IP bei Dedicated Server? | xister | Internet Allgemein | 3 | 12.05.05 14:43 |
| Wozu ist ein forum??? | NEWproblem | Hackerboard.de-Feedback | 4 | 14.04.04 17:00 |