Connection keep in php

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

  • Connection keep in php

    Hallo,

    ich muss zu einer Seite verbinden und Daten abfragen, doch leider habe ich da ein kleines Problem:

    Fatal error: Uncaught exception 'VerboseException' with message 'Malformed AMF message, connection may have dropped' in /var/www/web102/public_html/amf-core/io/AMFDeserializer.php:149
    Stack trace:
    #0 [internal function]: amfErrorHandler(1024, 'Malformed AMF m...', '/var/www/crypt-...', 149, Array)
    #1 /var/www/web102/public_html/amf-core/io/AMFDeserializer.php(149): trigger_error('Malformed AMF m...')
    #2 /var/www/web102/public_html/amf-core/io/AMFDeserializer.php(121): AMFDeserializer->readHeader()
    #3 /var/www/web102/public_html/amf-core/app/Filters.php(28): AMFDeserializer->deserialize(Object(AMFObject))
    #4 /var/www/web102/public_html/amf-core/app/Gateway.php(166): deserializationFilter(Object(AMFObject))
    #5 /var/www/web102/public_html/gateway.php(181): Gateway->service()
    #6 {main}
    thrown in /var/www/web102/public_html/amf-core/io/AMFDeserializer.php on line 149
    Die Verbindung wurde früher per Flash hergestellt und ich weiß nicht, wie die das ganze gehandelt haben.

    Meine derzeitige Funktion:
    PHP-Code:
    function PostToHost($host$path$data_to_send) {
      
    $fp fsockopen($host80);
      
    //printf("Open!\n");
      
    fputs($fp"POST $path HTTP/1.1\r\n");
      
    fputs($fp"Host: $host\r\n");
      
    fputs($fp"Content-type: application/x-amf\r\n");
      
    fputs($fp"Content-length: "strlen($data_to_send) ."\r\n");
      
    fputs($fp"Keep-Alive: 30\r\n");
      
    fputs($fp"Connection: keep-alive\r\n");
      
    //fputs($fp, "Connection: close\r\n");
      
    fputs($fp$data_to_send);
      while(!
    feof($fp)) {
          
    $res .= fgets($fp128);
      }
      
    fclose($fp);

      return 
    $res;

    Ich sehe bei der Sache eigentlich 2 Probleme:
    1. Die Daten werden vom Flash-File komisch versendet. Es ist eine POST-Anfrage, jedoch werden keine POST-Parameter übergeben, sondern einfach nur Content:
    PHP-Code:
    getPage/4
    Members 
    Als POST-Parameter wird mir gar nichts angezeigt (leer).
    Ich habe jetzt halt mal anstatt in der Variable $data_to_send die POST-Variablen halt mal den Content so reingeschrieben.

    2. und wohl eher das eigentliche Problem:
    Die oben angezeigte Fehlermeldung kommt, wenn ich Connection: close mache. Nach der Fehlermeldung zu urteilen schätze ich, dass er etwas braucht, bis er mir endgültig antworten kann und ich die Verbindung zu schnell beende.
    Benutze ich aber Keep-Alive und Connection: keep, dann läd mir die Seite 60 Sekunde und bricht mit einem MaxTimeOut ab.

    Ich mache irgendetwas falsch. Aber was?
    Konnte auch über die Suche und im Netz nicht wirklich etwas entdecken...


    vielen Dank.

    gruß
    Piremilok
    Zuletzt geändert von Piremilok; 28.01.2008, 17:44.

  • #2
    Ähm, sicher dass der Fehler von deinem Code (fsockopen) erzeugt wird, und nicht von "Zeil-Resource"?

    Wenn doch letzteres der Fall ist, informier dich beim Betreiber, welche Daten erwartet (und somit von dir gesendet) werden (sollen).

    Kommentar


    • #3
      Hallo,

      das Flash-File funktioniert einwandfrei.
      Nur soll das ganze jetzt von Flash auf ne normale Seite umgestellt werden.

      Das Problem: Das Flash-File hat mal irgendein Azubi gemacht und keiner weiß, wo die Originaldatei ist (Sauladen!). Das SWF ist zudem komprimiert und ein Decompilieren bringt uns net weiter.

      Wahrscheinlich wird mir nur die Anfrage beim Seitenbetreiber weiterhelfen...


      Ansonsten: wie kann ich allgemein das "keep-alive" nutzen?
      Im Netz war da nicht viel drüber zu finden.


      gruß
      Piremilok

      Kommentar


      • #4
        Ich geh mal genauso wenig auf dein Posting ein, wie du auf meines.

        Aber wie ist denn das Wetter in deiner Stadt? Bei mir ist aktuell dunkel.

        Kommentar


        • #5
          Hmmm,

          anscheinend hab ich dich falsch verstanden.
          Was meinst du mit "Zeil-Resource"?


          gruß
          Piremilok

          Kommentar


          • #6
            Die Resource an die du die Daten sendest.

            Kommentar


            • #7
              Hmm,

              also du denkst, dass das Script auf dem Server nen Fehler hat?

              Wenn ich mit dem Flash-File zum Server connecte, dann werden die Daten korrekt geladen.
              Also funktioniert das Script auf dem Server ja einwandfrei.

              Kommentar


              • #8
                also du denkst, dass das Script auf dem Server nen Fehler hat?
                So könnte man es sagen.

                Nochmal GANZ KONKRET:
                WOHER stammen die oben geposteten Fehlermeldungen? Von deinem PHP-Code oder von der "Seite" an die du die Daten postest?

                Wenn ich mit dem Flash-File zum Server connecte, dann werden die Daten korrekt geladen.
                Also funktioniert das Script auf dem Server ja einwandfrei.
                Da du den Server bisher nicht genannt hast, kann ich das nicht beurteilen. Es kann aber sein, dass bei korrekten Daten auch ein korrektes Ergebnis erscheint. Und du jedoch falsche Daten sendest und somit der "Server" auch ein "falsches Ergebnis" produziert.

                Aber wie gesagt, auf Grund der spärlichen Informationen kann ich nur Vermutungen anstellen. Wäre also sinnvoll wenn du jetzt erstmal die obige Frage beantwortest.

                Kommentar


                • #9
                  Das ist die Antwort vom Server.

                  Sorry, hab bei "Zeil-Resource" irgendwie an Zeile gedacht und net an Ziel. Und damit konnte ich nix anfangen.


                  Also, der gesendete Header vom Flash-File sieht so aus:
                  PHP-Code:
                  POST /engineHTTP/1.1
                  Host
                  xxx.xxx
                  User
                  -AgentMozilla/5.0 (WindowsUWindows NT 5.1derv:1.8.1.11Gecko
                  /20071127 Firefox/2.0.0.11
                  Accept
                  application/x-shockwave-flash,text/xml,application/xml,
                  application/xhtml+xml,text/html;
                  q=0.9,text/plain;q=0.8,image/png,*/ *;q=0.5
                  Accept
                  -Languagede-de,de;q=0.8,en;q=0.5,en-us;q=0.3
                  Accept
                  -Encodinggzip,deflate
                  Accept
                  -CharsetISO-8859-1,utf-8;q=0.7,*;q=0.7
                  Keep
                  -Alive300
                  Connection
                  keep-alive
                  Content
                  -typeapplication/x-amf
                  Content
                  -length46

                  [XYZ]getPage[XYZ]/4[XYZ]
                  [
                  XYZ]Members 
                  Wobei XYZ für Sonderzeichen, die nicht abgedruckt werden können, steht.


                  Empfangene Daten vom Script:
                  PHP-Code:
                  HTTP/1.x 200 OK
                  Date
                  Mon28 Jan 2008 15:02:54 GMT
                  Server
                  Apache
                  X
                  -Powered-ByPHP/5.2.0-8+etch7
                  Expires
                  Mon28 Jan 2008 16:02:54 GMT
                  Cache
                  -Controlno-store
                  Pragma
                  no-store
                  Content
                  -Length555
                  Keep
                  -Alivetimeout=2max=100
                  Connection
                  Keep-Alive
                  Content
                  -Typeapplication/x-amf
                  ----------------------------------------------------------
                  http://www.url-mit-wechselnder-id-zur-identifizierung.de 

                  Von meinem Script versendete Anfrage:
                  PHP-Code:
                  POST /engineHTTP/1.1
                  Host
                  xxx.xxx
                  User
                  -AgentMozilla/5.0 (WindowsUWindows NT 5.1derv:1.8.1.11Gecko/
                  20071127 Firefox/2.0.0.11
                  Accept
                  application/x-shockwave-flash,text/xml,application/xml,
                  application/xhtml+xml,text/html;
                  q=0.9,text/plain;q=0.8,image/png,*/ *;q=0.5
                  Accept
                  -Languagede-de,de;q=0.8,en;q=0.5,en-us;q=0.3
                  Accept
                  -Encodinggzip,deflate
                  Accept
                  -CharsetISO-8859-1,utf-8;q=0.7,*;q=0.7
                  Content
                  -typeapplication/x-amf
                  Content
                  -length26
                  Connection
                  close

                  getPage
                  /4
                  Members 
                  Und vom Server erhalten:
                  PHP-Code:
                  HTTP/1.1 200 OK
                  Date
                  Mon28 Jan 2008 18:32:51 GMT
                  Server
                  Apache
                  Vary
                  Referer
                  X
                  -Powered-ByPHP/5.2.0-8+etch7
                  Expires
                  Thu19 Nov 1981 08:52:00 GMT
                  Cache
                  -Controlno-storeno-cachemust-revalidatepost-check=0pre-check=0
                  Pragma
                  no-cache
                  Content
                  -Length892
                  Connection
                  close
                  Content
                  -Typetext/htmlcharset=UTF-8


                  Fatal error
                  Uncaught exception 'VerboseException'
                  with message 'Malformed AMF message, connection may have dropped' in
                  /var/www/web102/public_html/amf-core/io/AMFDeserializer.php:149
                  Stack trace
                  :

                  #0 [internal function]: amfErrorHandler(1024,
                  'Malformed AMF m...''/var/www/web102...'149, Array)
                  #1 /var/www/web102/public_html/amf-core/io/AMFDeserializer.php(149):
                   
                  trigger_error('Malformed AMF m...')
                  #2 /var/www/web102/public_html/amf-core/io/AMFDeserializer.php(121):
                   
                  AMFDeserializer->readHeader()
                  #3 /var/www/web102/public_html/amf-core/app/Filters.php(28):
                  AMFDeserializer->deserialize(Object(AMFObject))
                  #4 /var/www/web102/public_html/amf-core/app/Gateway.php(166):
                  deserializationFilter(Object(AMFObject))
                  #5 /var/www/web102/public_html/gateway.php(181):
                  Gateway->service()
                  #6 {main}
                    
                  thrown in /var/www/web102/public_html/amf-core/io/AMFDeserializer.php on line 149 

                  EDIT: Hab die Zeilen so umgebrochen, dass bei mir keine horizontale Scrollbar mehr ist.
                  Zuletzt geändert von Piremilok; 28.01.2008, 18:50.

                  Kommentar


                  • #10
                    1. brich doch bitte deinen code um!
                    2. so wie ich das sehe, ist amfphp speziell für flash ausgelegt, daher klappt das wohl offenbar nicht aus php heraus.

                    siehe auch die unterschiede
                    PHP-Code:
                    Content-Typeapplication/x-amf
                    Content
                    -Typetext/htmlcharset=UTF-
                    da musst du wohl das amf-format (was immer das sein mag), per php nachbilden.
                    Hab die Zeilen so umgebrochen, dass bei mir keine horizontale Scrollbar mehr ist.
                    aber erst ab 1600x1200

                    gruß
                    peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar

                    Lädt...
                    X