Mailinglisten-Archive |
Hallo Werner, > Ich glaube, es war in der mysql-de Liste, in der neulich jemand über > extrem langsames Arbeiten unter Windows berichtete und auch eine > Lösung dafür vorschlug. Ganz habe ich die Sache nicht verstanden; > statt localhost sollte eine IP-Nummer eingetragen werden. Offenbar wurden nur einige Basics bezgl. Datenbankconnectsyntax und TCP/IP-Basics nicht verstanden. Bei einer Rechnereinrichtung ist per default IMMER 127.0.0.1 die lokale Loopback-Adresse. Egal, welche IP-Nummer der Rechner im Netzwerk hat. D.h. vom Standpunkt des Benutzers gesehen, hat der Rechner mindestens 2 IP-Adressen, nämlich die über ein Netzwerksegment nach außen publizierte und die eben genannte interne Loopback-Adressse. Noch mehr IP-Adressen sind u.U. möglich. Dann gibt es - und zwar auf jedem System mit TCP/IP - die lokale Datei hosts. In der ist meistens per Default folgender Eintrag vorhanden: 127.0.0.1 localhost Die hosts stellt eine Art Mini-DNS dar, sie funktioniert auch, wenn im Netzwerk DNS- oder DHCP-Server vorhanden sind. Was z.B. der Fall ist, wenn mit den typischen Windows-Dial-Up-Einstellungen der Provider angewählt wird: Man erhält dynamisch von ihm eine IP-Nummer, einen DNS-Server und ein Default Gateway zugewiesen. Die Vermerke in der hosts bleiben dennoch, und zwar vorrangig gültig. D.h. wenn Du "127.0.0.1 www.pferdezeitung.com" einträgst, erreichst Du nur noch Deinen lokalen Rechner und die Internet-Domain ist ab sofort für Dich off line (möglicherweise erst nach einem Neustart und/oder einer Leerung des Cache). Anm.: Um Konflikte für "arme User" (in der Praxis auch sehr große Firmen), die über keinen eigenen IP-Pool verfügen zu vermeiden, wurden für lokale Rechnersysteme spezielle, im Internet nicht verwendete IP-Segmente eingeführt. Es sind dies die 10/24 (Class A) und 192.168/16 (Class B) - Netze. Es kommt dann nicht zu Konflikten mit "echten" IP-Nummern des Internet. RFC 1597 Address Allocation for Private Internets, z.B. unter http://safety.net/rfc1597.txt. Achtung: Die Datei MUSS "hosts" heißen, nicht etwa hosts.txt oder hosts.sam. Unter Unix und bspw. Novell Netware MUSS sie in /etc liegen, unter Windows MUSS sie im Windows-Basisverzeichnis (Umgebungsvariable windir) liegen. Unter Windows, und dass ist sozusagen die Falle, in die viele laufen können, ist sie nach der Installation der IP-Sockets nur in der Version hosts.sam (= hosts sample) vorhanden und wird erst aus dieser per Kopie oder Umbenennung händisch erzeugt. Ohne hosts aber keine Auflösung von localhost->127.0.0.1 > Ich nahm zunächst an, dies beziehe sich auf MySQL, und habe in die > Tabelle Host statt localhost die entsprechende IP-Nummer eingetragen > mit dem Erfolg, daß MySQL den Dienst versagte. Du kannst nicht ANSTELLE von localhost die IP-Nummer eintragen, sondern Du kannst nur der IP-Nummer den symbolischen Namen zuweisen - Du trägst also BEIDES ein. Die Tabelle hosts beinhaltet Zeilen mit links einer IP-Nummer und rechts dem symbolischen Host-Namen (ich glaube beim Macintosh schreibt man von rechts nach links, also genau anders herum). Beispiel für hosts: 127.0.0.1 localhost 192.168.10.2 www.testdomain.com 192.168.10.3 www.andererhttpserver.com ..usw... Die Adressen x.x.x.0 und x.x.x.255 können nicht verwendet werden, da sie speziellen Zwecken dienen. Zu x.x.x.1 werden normalerweise Router und Gateways eingetragen. Wichtig: Jede Zeile der hosts muß mit einem Zeilenende-Zeichen abgeschlossen sein. Sicherheitshalber also immer eine Leerzeile unten dran setzen. > Nun habe ich die Sache weiter beobachtet und stelle fest, daß > tatsächlich oftmals Server-Anfragen extrem langsam beantwortet > werden (40 Sekunden sind keine Seltenheit), und zwar sowohl unter > Apache als auch unter Omni, auch wenn MySQL nicht im Spiel ist. > Deshalb würde ich vermuten, daß das zugrundeliegende Problem auch > nichts mit MySQL zu tun hat, außerdem auch nichts mit Omni oder > Apache. Stimmt ;-) Ich habe letztens folgendes gesehen: mysql_connect("localhost","root",""); Wenn der Eintrag in localhost in der hosts-Datei oder die hosts-Datei selbst fehlt, gibt das natürlich einen Timeout. Das System weiß nicht, wie zu adressieren ist. Möglicherweise kommt es nach einiger Zeit auf die Idee, 127.0.0.1 zu verwenden, aber das wäre eine an sich unzulässige Eigenmächtigkeit bei der Interpretation eines nicht auffindbaren Hosts-Eintrags. > Ich nehme mal an, daß die Systeme bei allen blitzschnell laufen, > aber vielleicht hat der eine oder andere trotzdem einmal so etwas > erlebt und eine Lösung in seinem Fall gefunden. Wenn man die hosts nicht erst überprüfen oder erzeugen/editieren will, kann man folgendes machen: $localhost = "127.0.0.1"; mysql_connect( $localhost,"root",""); Mit freundlichen Grüßen, Oliver Kummerow email: naklar_(at)_altavista.net
php::bar PHP Wiki - Listenarchive