problem mit fgets

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • problem mit fgets

    Hallo zusammen,

    ich schicke Daten an einen Webserver und möchte die Antwort verarbeiten.
    Den Script läuft auf meinem rechner unter Apache und PHP5.2 .
    Anbindung ist DSL6000.

    PHP-Code:
    $fp fsockopen("ssl://server.com",443,$errstr,$errno);
    if(!
    $fp)
    {
        die();
    }
    else

        
    $file addslashes($file);
        
    $data $file;
        
    fputs($fp"POST /webservice/XMLServlet HTTP/1.0\r\n");
        
    fputs($fp"Host: server.com\r\n");
        
    fputs($fp"Authorization: Basic ".$kennung." \r\n");
        
    fputs($fp"Content-length: "strlen($data) ."\r\n");
        
    fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
        
    fputs($fp"Connection: close\r\n\r\n");
        
    fputs($fp$data);
    }
    $xxx 1;
    while(!
    feof($fp))

        echo 
    "Step ".$xxx." : ".date("d.m.Y - H:i:s")."<br>\n";
        
    $data .= fgets($fp2048);
        
    $xxx++;

    da das script beim ersten Aufruf sehr lahm ist, habe ich eine Art Debug mit Zeitmarken gemacht.
    Dabei fiel auf, dass die meiste Zeit für die While Schleife drauf geht.
    Wie man in den Auszügen sieht, wird das Script immer schneller :-)

    Ich rufe das Script in einer Minute 4 mal auf.
    Beim letzten mal ist das Script sehr schnell.

    Code:
    1 : 06.06.2008 - 11:29:45<br>
    2 : 06.06.2008 - 11:30:08<br>
    3 : 06.06.2008 - 11:30:08<br>
    4 : 06.06.2008 - 11:30:08<br>
    5 : 06.06.2008 - 11:30:08<br>
    6 : 06.06.2008 - 11:30:08<br>
    7 : 06.06.2008 - 11:30:08<br>
    8 : 06.06.2008 - 11:30:08<br>
    9 : 06.06.2008 - 11:30:08<br>
    15 seconds later again

    Code:
    1 : 06.06.2008 - 11:30:58<br>
    2 : 06.06.2008 - 11:31:22<br>
    3 : 06.06.2008 - 11:31:22<br>
    4 : 06.06.2008 - 11:31:22<br>
    5 : 06.06.2008 - 11:31:22<br>
    6 : 06.06.2008 - 11:31:22<br>
    7 : 06.06.2008 - 11:31:22<br>
    8 : 06.06.2008 - 11:31:22<br>
    9 : 06.06.2008 - 11:31:22<br>
    another 15 seconds later
    Code:
    1 : 06.06.2008 - 11:33:01<br>
    2 : 06.06.2008 - 11:33:05<br>
    3 : 06.06.2008 - 11:33:05<br>
    4 : 06.06.2008 - 11:33:05<br>
    5 : 06.06.2008 - 11:33:05<br>
    6 : 06.06.2008 - 11:33:05<br>
    7 : 06.06.2008 - 11:33:05<br>
    8 : 06.06.2008 - 11:33:05<br>
    9 : 06.06.2008 - 11:33:05<br>
    another 15 seconds later
    Code:
    1 : 06.06.2008 - 11:33:28<br>
    2 : 06.06.2008 - 11:33:31<br>
    3 : 06.06.2008 - 11:33:31<br>
    4 : 06.06.2008 - 11:33:31<br>
    5 : 06.06.2008 - 11:33:31<br>
    6 : 06.06.2008 - 11:33:31<br>
    7 : 06.06.2008 - 11:33:31<br>
    8 : 06.06.2008 - 11:33:31<br>
    9 : 06.06.2008 - 11:33:31<br>
    10 : 06.06.2008 - 11:33:31<br>
    11 : 06.06.2008 - 11:33:31<br>
    12 : 06.06.2008 - 11:33:31<br>
    13 : 06.06.2008 - 11:33:31<br>
    14 : 06.06.2008 - 11:33:31<br>
    15 : 06.06.2008 - 11:33:31<br>
    16 : 06.06.2008 - 11:33:31<br>
    Man sieht, dass beim ersten fgets am meisten Zeit drauf geht.
    Hat jemand ne Idee, warum das so ist ?
    Kann ich daran etwas ändern?

    bye jogi

  • #2
    da das script beim ersten Aufruf sehr lahm ist, habe ich eine Art Debug mit Zeitmarken gemacht.
    Die Zeitmarken, die du postest, stammen aber nicht von dem Code. Da fehlt mindestens ein "Step". Wer weiß, was du sonst noch geändert hast.

    Dabei fiel auf, dass die meiste Zeit für die While Schleife drauf geht.
    Ähm, du misst auch nichts anderes als die Schleife... Die Aussage ist also quatsch.

    Man sieht, dass beim ersten fgets am meisten Zeit drauf geht
    Nicht eindeutig. Das könnte theoretisch auch am feof() liegen.

    Generell würde ich das aber darauf zurückführen, dass der Filepointer das erste mal verwendet wird. Kann ich aber nur vermuten, konkret wissen tue ich das nicht.

    Kommentar

    Lädt...
    X