Ankündigung

Einklappen
Keine Ankündigung bisher.

cURL calls auf immer die selbe SSL URL, wie beschleunigen?

Einklappen

Neue Werbung 2019

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

  • cURL calls auf immer die selbe SSL URL, wie beschleunigen?

    Hallo,

    mein Webserver muss immer wieder HTTPS Aufrufe der selben Domain machen (nur andere Parameter). Heute mache ich das mit curl_init() und am Ende curl_close().

    Wird der Handle automatisch wiederverwendet (wie zB by MySQL) oder muss ich das manuell machen?

    Wenn also externe Aufrufe auf meinen Webservice kommen, muss ich andere HTTPS Aufrufe machen. Ich kann also nicht den selben Curl Handle immer wieder verwenden, da das nicht immer die selbe Session ist sondern immer neue Anfragen an meine Seite. Wie macht man das dann?

    Wenn ich immer den selben Handle nehmen würde und 100 Leute gleichzeitig bei mir anfragen (ich habe also 100 Sessions) und ich gleichzeitig immer CURL Aufrufe mit dem selben Handle mache, dann geht das doch schief, oder? Parallele Anfragen mit dem selben Handle? Ich muss also nicht aus einer Session viele Anfragen machen, sondern aus vielen Sessions jeweils eine.

    Hat mir da jemand mehr Informationen? Ich will auf jeden Fall vermeiden, dass immer eine nagelneue HTTPS Verbindung aufgebaut wird (mit Zertifikats-check und Aushandeln etc).

    Leider hab ich noch nicht mal einen Weg gefunden zu testen ob das heute so ist oder nicht

    Danke,

    Donald

  • #2
    Also soweit ich das Internet-Protokoll kenne wird immer eine Anfrage pro Verbindung gestellt und diese anschließend wieder geschlossen.
    Das würde bedeuten, dass du deine Verbindung sowieso nicht halten kannst, bis du sie wieder brauchst.

    Falls du ein Ergebnis später noch einmal brauchst, würde sich ein Cache-System anbieten, was vorherige Abfragen abspeichert für die spätere Verwendung, das sollten dann auch mehrere Session "gleichzeitig" lesen können.
    Wobei fast sicher nie 100-Abfragen wirklich zeitgleich auf dem Server laufen, da bräuchtest du schon sehr viele Besucher, oder ausergewöhnliches System. (z.B. Chat mit bewusst langen offenen Abfragen)

    Kommentar


    • #3
      Hallo,

      Das Ergebnis zu cachen macht keinen Sinn denn es wird in 99,999% nicht das selbe sein. Sonst könnte ich mir die Anfragen ja sparen. Mein Webservice holt hier Daten ab, die der Kunde angefordert hat. Er ist sozusagen ein Vermittler. Ich muss also die selbe Domain sehr häufig anfragen und möchte dazu gerne cURL Verbindungen wiederverwenden. Leider finde ich nichts passendes mit Google. Ich finde Methoden um parallel mehrere Seiten abzufragen, aber nicht um bestehende Verbindungen über Sessions hinweg wiederzuverwenden.

      Kukulkan

      Kommentar


      • #4
        Wird der Handle automatisch wiederverwendet (wie zB by MySQL) oder muss ich das manuell machen?
        das würde mich auch brennend interessieren.
        es gibt ja diese "Connection: Keep-Alive" Sache von http 1.1 aber wie ich es auch drehe mein client schickt immer neue sync's.

        http://tools.ietf.org/html/rfc2616#section-8.1

        Kommentar


        • #5
          Möglich wäre ein Request-Agent, der als Daemon auf sockets wartet, der würde nur einmal / in Host-gegebenen Intervallen initialisieren. Die Anfragen stellst du dann per Socket an den Agent und bekommst als feedback die Daten.

          curl kann auch multi-requests im Übrigen, aber das kriegst du cross-session nur mit eigenen Session-Handlern hin. Und das wird kein Spaziergang.

          Kommentar


          • #6
            curl kann auch multi-requests im Übrigen, aber das kriegst du cross-session nur mit eigenen Session-Handlern hin.
            stimmt in der docu steht auch:

            Curl will attempt to re-use connections for multiple file transfers, so that getting many files from the same server will not do multiple connects
            / handshakes. This improves speed. Of course this is only done on files specified on a single command line and cannot be used between separate
            curl invokes.
            hab ich also mal

            Code:
                            $ch = curl_init($req);
                            curl_setopt($ch, CURLOPT_HEADER, 0);
                            curl_setopt($ch, CURLOPT_POST, 0);
                                $page  = curl_exec($ch);
                            $response = curl_getinfo( $ch );
                     //       curl_close($ch);
                            if ($response['http_code'] == 301 || $response['http_code'] == 302){
                                    return $response['http_code'];
                            }
                            return $page;
            auf mein curl_close verzichtet; bringt aber irgendwie nix, schicke trotzdem immer sync und es kommen trotzdem immer fin:
            Code:
            17:48:15.664906 IP 38528 >.www: Flags [F.], seq 81, ack 246775, win 1216, options [nop,nop,TS val 1366191 ecr 1851207531], length 0
            
            17:48:15.769694 IP  38529 > www: Flags [S], seq 799843859, win 5840, options [mss 1460,sackOK,TS val 1366217 ecr 0,nop,wscale 7],
            ich gehe mal davon aus, was prinzipielles nicht verstanden zu haben, was denn ?
            mit den genannten sessionhandler wird ja nicht zusammenhängen.

            Kommentar


            • #7
              Wie viel Zeit ist zwischen den Aufrufen? Kann es zum Timeout von Seiten des Servers kommen?

              Kommentar


              • #8
                (0.769694 -0.664906)s ~ 0.13 s
                laut meinem dump. ein timeout, hoffe nicht.

                Kommentar


                • #9
                  Hallo,

                  hab den Thread leider aus den Augen verloren. Also mein cURL macht definitiv keine Wiederverwendung der Handles. Es wird immer wieder alles neu verhandelt (was bei https:// echt nervig ist).

                  Hat jemand inzwischen eine Lösung gefunden? moma?

                  Donald

                  Kommentar

                  Lädt...
                  X