php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.03.2006, 09:20  
Gast
 
Beiträge: n/a
Standard Verbindungen schließen?!

Hallo,

mir wurde von meinem Host die Website gesperrt weil angeblich zuviele Verbindungen zu SQL Datenbank nicht geschlossen werden.

Wie schließe ich die Verbindungen denn wieder?

Mit mysql_close?? Aber da steht ja das die automatisch wieder geschlossen werden....oder sehe ich das falsch?
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.03.2006, 09:58  
Gast
 
Beiträge: n/a
Standard

Benutzt du eventuell mysql_pconnect statt mysql_connect? Und was spricht dagegen, wenn man mysql_connect benutzt, auch mysql_close zu schreiben?

Gruß
phpfan
 
Alt 14.03.2006, 10:58  
Gast
 
Beiträge: n/a
Standard

Nein ich benutze connect....
ja ich hab das ja jetzt überall mysql_close benutzt.

Ich bin mir nur nicht 100% sicher ob dies den Fehler verursacht hat.

Mfg
goosele
 
Alt 14.03.2006, 11:12  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Zitat:
Die Verwendung von mysql_close() ist für gewöhnlich nicht notwendig, weil offene, nicht persistente Verbindungen automatisch mit Beendigung des PHP-Skripts geschlossen werden. Siehe auch Freigabe von Resourcen.

Anmerkung: mysql_close() schließt keine persistenten Verbindungen, die mit mysql_pconnect() geöffnet wurden.
Wenn du wirklich kein mysql_pconnect o.ä. verwendest und auch bei mysql_connect nicht das Flag für neue Verbindung setzt, dann ist es ungewöhnlich, wenn Datenbank-Verbindungen von deinen Scripten nicht geschlossen werden.

Das einzige, was ich mir vorstellen könnte, sind Script-Langläufer, also dass du einfach zu hohe Last erzeugst und dadurch einfach zu viele Datenbankverbindungen parallel offen hast. Frage deinen Hoster nach konkreten Lösungsvorschlägen, da du dir (Verwendung von mysql_connect und mysql_close, sowie mysql_free_result vorausgesetzt) keiner Schuld bewusst sein musst.

P.S.: Parallel denke über allgemeine Script-Optimierungen nach. Meistens liegt es nicht an offen bleibenden Verbindungen, sondern an Langläufer-Scripts.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 14.03.2006, 11:36  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Persistente Verbindungen werden nie geschlossen sie werden einmalig geöffnet und dann wird immer auf das handle zurückgegriffen.
Zitat:
Erstens: vor dem Verbindungsaufbau wird zunächst versucht eine offene (persistente) Verbindung zum gleichen Host, mit dem gleichen Benutzernamen und Benutzerkennwort zu finden. Wenn das gelingt, wird die Verbindungskennung dieser Verbindung zurückgeliefert anstatt eine neue Verbindung aufzubauen.

Zweitens: die Verbindung zum SQL Server wird beim Beenden des PHP-Skripts nicht geschlossen. Sie bleibt zur zukünftigen Verwendung bestehen. (mysql_close() schließt keine von mysql_pconnect() geöffneten Verbindungen).
http://www.php.net/manual/de/functio...l-pconnect.php


Bleibt eigentlich letzendlich nur noch die Frage wieviele Verbindungen du pro Script öffnenst?
Zitat:
Die Verbindung zum Datenbank-Server wird geschlossen, sobald die Ausführung des PHP-Skripts beendet ist oder vorher explizit die Funktion mysql_close() aufgerufen wird.
http://www.php.net/manual/de/function.mysql-connect.php

Im endeffekt bleibt es jeden selbst überlassen bei n Root Server kann man ja beliebig viele Connections öffnen Ports sind ja knappe 60000 da aber bei n Webspace-Anbieter wäre das nicht ratsam aber im Regelfall hat man nur 1-2 pro Request
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline  
Alt 14.03.2006, 13:28  
Gast
 
Beiträge: n/a
Standard

Ok, dann hoffe ich mal das mit mysq_close mein Host nicht mehr meckert.

Vollständigerweise hier meine Connection:

mysql_connect($servername,$dbusername,$dbpassword)


Kann es sein, da ich Flash Spiele benutze, die auf eine PHP Datei immer weieder zugreifen (wird aber ja nix refresht), dass dadurch dort nicht die Connection gekappt wurde?
 
Alt 14.03.2006, 13:56  
Erfahrener Benutzer
 
Registriert seit: 25.04.2005
Beiträge: 1.356
HStev zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Lesen u. verstehen

Zitat:
Die Verbindung zum Datenbank-Server wird geschlossen, sobald die Ausführung des PHP-Skripts beendet ist oder vorher explizit die Funktion mysql_close() aufgerufen wird.
kann also nicht sein ... es sei denn das PHP befindet sich in ner endlosschleife was aber auch nicht sein kann/darf...

PHP hat sowas wie einen abgespeckten Garbage Collector
__________________
Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.
HStev ist offline  
Alt 14.03.2006, 14:34  
Gast
 
Beiträge: n/a
Standard Re: Verbindungen schließen?!

Zitat:
Zitat von goosele
Aber da steht ja das die automatisch wieder geschlossen werden....oder sehe ich das falsch?
Aus Sicht des Hosters schon, weil der Clientprozeß nicht sofort gekillt wird.

Könntest Du unter Linux mit top sehen, wie lange die Prozesse noch leben und wieviel Speicher sie belegen. Auch dann, wenn das Script schon beendet ist.

Wenn Du sauber arbeiten willst:
immer schön mit mysql_free_result($res) den Speicher putzen und am Schluß mysql_close() verwenden. Tut absolut nicht weh...
 
Alt 14.03.2006, 16:06  
Gast
 
Beiträge: n/a
Standard

Ok hab mal alles sauber mit mysql_free_result und mysql_close gemacht (vielleicht hab ich ein paar vergessen, weil ich viele Scripte habe und nur drübergeflogen bin).....

Kann man irgendwie feststellen wieviele Verbindungen aufgebaut werden?

Damit mein Host nicht wieder plötzlich mich ohne Vorwarnung *grummel* sperrt und mir sagt, dass ich zuviele offene SQL Anfragen habe!
 
Alt 14.03.2006, 16:48  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von goosele
Kann man irgendwie feststellen wieviele Verbindungen aufgebaut werden?
Auf Systemebene kann der Root nachgucken, wieviele "mehr oder weniger schlafende Prozesse" noch existieren.

Ich erledige das so, daß ich mir den Luxus von auto_prepend_file und auto_append_file gönne.

prepend:
Connect herstellen und Datenbank selektieren

append:
@mysql_close();

Da ich eine MySQL Klasse verwende, ist das mysql_free_result() an passender Stelle eingebaut.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Auftrag: Anzeige von Verbindungen zwischen Personen Christof Moser Beitragsarchiv 1 28.05.2008 13:46
2 Datenbank Verbindungen herstellen themonk Datenbanken 3 29.02.2008 21:07
multiple sql verbindungen innerhalb einer datei Makuro PHP-Fortgeschrittene 8 20.02.2008 16:38
Verbindungen absichern errox PHP Tipps 2008 5 30.01.2008 09:57
tcp verbindungen Smily0412 PHP Tipps 2007 5 03.06.2007 14:20
Verbindungen von Freunden in einer Freundesliste Exon PHP-Fortgeschrittene 8 25.04.2007 10:53
Vorteile von persistenten Verbindungen ? Exon Datenbanken 6 18.04.2007 21:10
mehrere Verbindungen in einem Script !? madSoul PHP Tipps 2005-2 2 17.08.2005 15:19
zu viele mysql verbindungen... Sclot Datenbanken 1 16.08.2004 09:08

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php persistenten verbindungen schliessen, schließen der schlafenden verbindungen mysql, offene mssql verbindungen php schliessen, mysql geöffnete verbindungen automatisch schließen, durch mysql_close auch mysql_free_result, mssql 2008 offene verbindungen schliessen, php wieviele datenbank connections, sql verbindungen automatisch beenden, sql verbindungen schließen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:16 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.