Ik heb de volgende code:
Ik gooi hier een GET request heen en krijg dan een HEADER en XML data terug. Het vreemde is dat die XML data opeens afgekapt wordt en het script maar door blijft lopen terwijl hij verder niks meer echo'd. Het lijkt net alsof hij die $fp nog openhoudt. Zie ik iets doms over het hoofd? "klaar" echood hij dus nooit.
Als ik die feof() eruit haal, dan laat hij netjes een regeltje zien en zegt hij klaar. Zou hij het einde van de stream op de een of andere manier niet kunnen herkennen?
Ik las dit op php.net:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| $buffer = ""; $fp = fsockopen("test.domein.nl", 80, $errno, $errstr, 1); if (!$fp) { return("Geen connectie mogelijk."); } else { fputs($fp, "$de_request"); while (!feof($fp)) { $buffer = fgets($fp, 4526); echo $buffer; } fclose($fp); } echo "klaar"; |
Ik gooi hier een GET request heen en krijg dan een HEADER en XML data terug. Het vreemde is dat die XML data opeens afgekapt wordt en het script maar door blijft lopen terwijl hij verder niks meer echo'd. Het lijkt net alsof hij die $fp nog openhoudt. Zie ik iets doms over het hoofd? "klaar" echood hij dus nooit.
Als ik die feof() eruit haal, dan laat hij netjes een regeltje zien en zegt hij klaar. Zou hij het einde van de stream op de een of andere manier niet kunnen herkennen?
Ik las dit op php.net:
Dat staat dus niet in de header en ik kan die niet aanpassen. Is er geen andere manier om de verbinding te closen? Als ik toch niks meer binnenkrijg, dan zou je toch een commando kunnen geven oid?Just a note to everyone who is using fsockopen and fread / fgets for a HTTP connection.
Unless you specify "Connection: Close" in your headers you will need to wait for the socket to time out before feof($streamPointer) to return true.
This has wasted 2 days of my time, grr!
[ Voor 60% gewijzigd door Verwijderd op 27-01-2004 17:15 ]