Socket Antwort dauert lange

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

  • Socket Antwort dauert lange

    hi,

    ich habe ein problem mit einer php socket verbindung:

    ich baue eine verbindung zum server auf (es handelt sich hierbei um eine suchmaschine), schicke dann eine anfrage ab. Dann dauert es ca. 30 sekunden bis die antwort im browser ausgegeben wird.

    wenn ich die selbe anfrage über einen HTTP-GET Request mache, dann ist die antwortzeit bei einer sekunde. das selbe bei einer java verbindung.

    Hier mein Code:

    PHP-Code:
    <?php

    $data 
    "/action=query&text=*";
    $antwort NULL;

    $fp stream_socket_client("http://localhost:21000"$errno$errstr);

    fputs($fp$data);

    while (!
    feof($fp)) {
    $antwort .= fgets($fp4096);
    echo 
    $antwort;
    }
    fclose($fp);

    ?>
    Habe dann mal sowas versucht:
    fputs($fp, $data);
    fputs($fp,"Connection: close\n\n");
    das ganze geht dann zwar rasend schnell, jedoch erhalte ich nur ein paar zeilen der antwort, der rest ist abgeschnitten.

    oder auch mal sowas:
    fgets($fp, 2);
    dauert aber auch 30 sekunden...

    Kenne mich halt nicht besonders gut aus und habe alles mögliche einfach mal versucht...
    Kann mir vielleicht jemand weiterhelfen? Komme hier einfach nicht weiter. Die Antwort die zurück bekomme ist ja richtig, dauert halt nur ewig.

    Bin für jede Hilfe dankbar!

  • #2
    afaik kannst du bei dieser Fkt kein http:// im URL angeben. Anstelle von http:// wäre das Transportprotokoll zu erwähnen (z.B. tcp:// oder udp://) Entweder du schreibst einfach tcp://localhost:21000 oder einfach localhost:21000 weil bei fehlendem Transportprotokoll einfach tcp:// angenommen wird (siehe auch http://us2.php.net/manual/de/transports.php)

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      danke für den hinweis,

      habe ich jedoch auch schon versucht: kein unterschied...

      Kommentar


      • #4
        Und wo setzt du den Request an den Server ab ? Bzw wie kommst du drauf, dass deine Angabe ausreichend sein könnte ? Woher sollte denn der Server wissen ob du GET,POST oder HEAD willst ? Das musst du ihm schon sagen
        Ich würde mal folgendes probieren
        PHP-Code:
        <?php
        $data 
        "GET /action=query&text=* HTTP1.0\r\n\r\n";
        $antwort NULL;
        $fp stream_socket_client("tcp://localhost:21000"$errno$errstr);
        fputs($fp$data);
        while (!
        feof($fp)) {
          
        $antwort .= fgets($fp4096);
        }
        echo 
        $antwort;

        fclose($fp);
        ?>
        Gruss

        tobi

        p.s. würde so änlich im Manual stehen !
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          yupp, sieht so aus als ob es das war.

          Vielen Dank!!! Das hätte mich noch einiges an Zeit gekostet bis ich das heraus gefunden hätte...

          Gruss und nochmals Danke!!!

          Kommentar


          • #6
            Das hätte mich noch einiges an Zeit gekostet bis ich das heraus gefunden hätte...
            Wenn du das Manual gelesen hättest, dann wäre das RuckZuck gegangen. Dort gibt's nämlich meist auch gute Anwendungsbeispiele zu den einzelnen Funktionen. Also für's nächste Problem erst ins Manual schauen

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar

            Lädt...
            X