XML-String per HTTPS an Server

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

  • XML-String per HTTPS an Server

    Hallo zusammen,


    ich schicke eine XML-Datei per HTTP POST an einen Server der firma X.
    Der Server generiert daraufhin eine Antwort.

    PHP-Code:
    $file "";
    $fp1 fopen("./anfrage.xml","r");
    $kennung base64_encode("user:pass");
    while(!
    feof($fp1))
    {
        
    $file1 fgets($fp1100);
        
    $file $file.$file1;
    }



    $data "";
    $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);
    }
    while(!
    feof($fp))
    {
        
    $fget fgets($fp128);
        
    $data .= $fget;
    }
    fclose($fp);
    $xml_arr explode("\r\n\r\n",$data);
    echo 
    $xml_arr[1]; 
    Die Antwort kommt nach ca. 10 Sekunden(bei einem Artikel).
    Bei 10 Positionen (was durchaus normal ist) sind es ca. 40 Sekunden)

    Nun gibt es von der Firma X einen Testsimulator, der eine XML-Anfrage an den Server schickt, bei dem die Antwort schon nach 2 Sekunden kommt.
    PHP-Code:
    <form method=POST target="Output" action="https://server.com">
      <
    textarea name="xml_data" rows="10" cols="56">
         -- 
    gleicher inhalt wie in anfrage.xml
      
    </textarea>
      <
    input type=submit  value="   START SIMULATION   ">
    </
    form
    Da der Server eine Anmeldung erfordert kommt nach dem Aufruf ein Anmeldefenster, ansonsten werden die gleichen Daten an den Server geschickt.

    Kann mir jemand erkären, wieso meine Variante so viel langsamer ist ?
    Welche Möglichkeiten gibt es noch, die Daten per HTTPS an den Server zu schicken ?
    (CURL habe ich schon probiert, dauert auch 10 Sekunden.)


    Gruß jogi

  • #2
    Hallo nochmal,

    ich habe die Sache untersucht.
    Das Script läuft auf einem IBM-Server im Haus bei uns unter php.
    Die Anbindung ist DSL 16000.

    Von den 10 Sekunden benötigt dieser Teil allein 5 Sekunden:
    PHP-Code:
    while(!feof($fp))
    {
        
    $fget fgets($fp128);
        
    $data .= $fget;

    Kommentar

    Lädt...
    X