phpbar.de logo

Mailinglisten-Archive

[php] Tempo

[php] Tempo

Oliver Kummerow naklar_(at)_altavista.net
Mon, 30 Aug 1999 08:39:04 +0200


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