Hi Carlo,
222 x fsockopen() nur: 4.878,922 ms
Im Gegensatz zu 222 mal ...
TCP/IP-Verbindung zu $host:80 aufbauen
TCP/IP-Verbindung wieder schließen
na-ja,
wenigstens fwrite() muss verwendet werden, weil sonst der Zweck des Ganzen, die Übertragung von "I=1&D=1001", nicht funktioniert. Das normalerweise übliche fread(); kann jedoch entfallen!
je nachdem, was du wirklich vorhast, magst du Recht haben.
Bei dem Zeitunterschied hatte ich auch zuerst an die Responsedaten gedacht. Aber im Serverlog kann man an den Einträgen nicht unterscheiden, mit welcher Methode angefragt wird.
Stimmt - im Server-Log werden nur die Requests protokolliert. Man kann den Apachen aber so einstellen, dass auch die übertragene Datenmenge (Request und Response) mitprotokolliert wird. Dann würde der Unterschied auffallen. Das macht aber (vermutlich aus Performance-Gründen) kaum jemand.
D.h. die Daten landen in jedem Fall im TCP-Stack des anfragenden Hosts, sie werden halt nur nicht ausgelesen.
Aber nur der erste Block. Da der vom Client auf IP-Ebene nicht bestätigt wird, bricht der Server die Verbindung dann von sich aus ab, ohne den Rest noch hinterherzuschmeißen. Wenn der Client mit fclose() die Verbindung trennt, geht's sogar noch schneller; dann braucht der Server nicht einmal ein Timeout abzuwarten.
Man findet unzählige Anleitungen, wie Sockets angewendet werden, aber niemand weiss, wie sie intern wirklich funktionieren.
Meinst du das ernst?
Mal ehrlich: Wie sie intern funktionieren, ist sicher auch interessant, aber für die Praxis meistens nicht relevant, zumal die Implementierung immer betriebssystemabhängig ist. Für die meisten Programmierer genügt es zu wissen, dass Sockets eine direkte Kontaktaufnahme auf IP-Ebene erlauben (wahlweise TCP oder UDP).
Wird das nicht mehr gelehrt?
Wurde das je gelehrt? Nach meiner Erfahrung gehört das zum Programmierer-Wissen, das man sich im Lauf der Zeit selbst aneignen muss.
So long,
Martin
F: Was ist eigentlich aus deinem schlimmen Durchfall geworden?
A: Mein Arzt hat mir Valium verschrieben.
F: Und das hilft?
A: Naja, ich mach mir immer noch in die Hose. Aber inzwischen ist es mir egal.