Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Connection keep in php [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Connection keep in php


 
Piremilok
28-01-2008, 19:10 
 
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:function PostToHost($host, $path, $data_to_send) {
$fp = fsockopen($host, 80);
//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($fp, 128);
}
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: 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

 
TobiaZ
28-01-2008, 19:18 
 
Ä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).

 
Piremilok
28-01-2008, 19:22 
 
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

 
TobiaZ
28-01-2008, 19:24 
 
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.

 
Piremilok
28-01-2008, 19:36 
 
Hmmm,

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


gruß
Piremilok

 
TobiaZ
28-01-2008, 19:37 
 
Die Resource an die du die Daten sendest.

 
Piremilok
28-01-2008, 19:43 
 
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.

 
TobiaZ
28-01-2008, 19:51 
 
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.

 
Piremilok
28-01-2008, 20:35 
 
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:POST /engine/ HTTP/1.1
Host: xxx.xxx
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.11) Gecko
/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-Language: de-de,de;q=0.8,en;q=0.5,en-us;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-type: application/x-amf
Content-length: 46

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


Empfangene Daten vom Script:HTTP/1.x 200 OK
Date: Mon, 28 Jan 2008 15:02:54 GMT
Server: Apache
X-Powered-By: PHP/5.2.0-8+etch7
Expires: Mon, 28 Jan 2008 16:02:54 GMT
Cache-Control: no-store
Pragma: no-store
Content-Length: 555
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: application/x-amf
----------------------------------------------------------
http://www.url-mit-wechselnder-id-zur-identifizierung.de


Von meinem Script versendete Anfrage:POST /engine/ HTTP/1.1
Host: xxx.xxx
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.11) Gecko/
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-Language: de-de,de;q=0.8,en;q=0.5,en-us;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Content-type: application/x-amf
Content-length: 26
Connection: close

getPage/4
Members

Und vom Server erhalten:HTTP/1.1 200 OK
Date: Mon, 28 Jan 2008 18:32:51 GMT
Server: Apache
Vary: Referer
X-Powered-By: PHP/5.2.0-8+etch7
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 892
Connection: close
Content-Type: text/html; charset=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.

 
Kropff
28-01-2008, 20:43 
 
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
Content-Type: application/x-amf
Content-Type: text/html; charset=UTF-8
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

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:28 Uhr.