Christian Kruse: Geschwindigkeit...

Beitrag lesen

Hallo,

So schaffe ich mit PHP nichtmal 10 Requests pro Sekunde.

Kein Wunder :)

Aber kann ich nicht einfach fsockopen aus dere Schleife Auslagern
und die Socket auslagern?

Nicht so richtig. Aber du kannst was anderes machen (Perl, weil man
in PHP nicht forken kann):

use LWP::Simple;

sub waiter {
 wait;
 $SIG{CHLD} = &waiter; # for SysV
}

sub make_conn() {
  get('http://wwwtech.de/');
}

$SIG{CHLD} = &waiter;
for(1..1000) {
  my $pid = fork();
  if(defined $pid) {
    if(!$pid) {
      make_conn();
      exit(0);
    }
  }
  else {
    die("Could not fork!");
  }
}

Kann man das den noch irgendwie beschleunigen,

Ja: mehrere Verbindungen gleichzeitig, nicht nacheinander machen :)

oder ist PERl da deutlich schneller?

Das hat nix mit Perl oder PHP zu tun -- das liegt am Protokoll.

Warum, dauer das absenden so lange?

Nicht das Absenden dauert lange, sondern das Aufbauen der Verbindung
dauert lange. Bei TCP/IP muessen 3 Pakete geschickt werden, um eine
Conn aufzubauen (der 3-Wege-Handshake):

You                           Host
                  --> SYN  --> Listens
Waiting for ACK   <-- ACK  <-- Waits for ACK
Established       --> ACK  --> Established

Dasselbe gilt fuer den Abbau einer Verbindung:

You                       Host
              --> FIN --> Established
Waits for ACK <-- ACK <-- Waits for ACK
Closed        --> ACK --> Closed

Was zum Lesen dazu:

http://sparky.freesoft.org/CIE/Course/Section4/10.htm

Dazu kommt, dass die Pakete eventuell ueber n Rechner gehen muessen.
Du kannst das Netzwerk-Segment, in dem der Rechner steht,
im Normalfall nicht direkt erreichen, sondern musst ueber sog.
'Router' gehen. Herausfinden, wieviele Router du besuchst, kannst
du mit 'traceroute'.

Gruesse,
 CK

0 44

Geschwindigkeit...

Philipp Hasenfratz
  • webserver
  1. 0
    Mulder
    1. 0
      Philipp Hasenfratz
      1. 0
        Andreas
        1. 0
          Philipp Hasenfratz
          1. 0
            Andreas
            1. 0
              Christian Kruse
              1. 0
                Andreas
                1. 0
                  Philipp Hasenfratz
                  1. 0
                    Andreas
                    1. 0
                      Philipp Hasenfratz
                2. 0
                  Christian Kruse
                  1. 0
                    Andreas
                    1. 0
                      Christian Kruse
              2. 0
                Christian Kruse
      2. 0
        Christian Kruse
        1. 0
          Philipp Hasenfratz
          1. 0
            Mulder
          2. 0
            Christian Kruse
            1. 0
              Philipp Hasenfratz
              1. 0
                Christian Kruse
                1. 0
                  Philipp Hasenfratz
                  1. 0
                    Christian Kruse
  2. 0

    Geschwindigkeit... - und hier die erste Auswertung...

    Philipp Hasenfratz
  3. 0
    code2i
    1. 0
      Philipp Hasenfratz
      1. 0
        Klaus Mock
        1. 0
          Philipp Hasenfratz
  4. 0

    zweite Auswertung - Danke Andreas

    Philipp Hasenfratz
    1. 0
      Andreas
      1. 0
        Philipp Hasenfratz
  5. 0
    Michael Schröpl
    1. 0
      Andreas
      1. 0
        Michael Schröpl
        1. 0
          Andreas
          1. 0
            Michael Schröpl
    2. 0
      Philipp Hasenfratz
      1. 0
        Andreas
        1. 0
          Philipp Hasenfratz
          1. 0
            Andreas
            1. 0
              Philipp Hasenfratz
          2. 0
            Michael Schröpl
            1. 0
              Philipp Hasenfratz
              1. 0
                Philipp Hasenfratz