| | | | |
| |||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer Registriert seit: 17.10.2003
Beiträge: 243
![]() | @Admins: Bitte den Beitrag nach Anfänger verschieben. Die Grundlegenden Dinge wie die Kenntniss über den 2. Parameter von fgets Code: string fgets ( resource handle [, int length]) |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 30.06.2004
Beiträge: 619
![]() | // Irgendwie schlecht gelaunt heute? Ich habe es bereits mit sowohl kleineren als auch größeren Werten (bis 64000) probiert, denke aber nicht, daß das für die Dauer relevant ist. Beispiel: Ich lasse mir nach jedem fgets($fp) [also ohne length] die vergangene Zeit ausgeben. 1 (17): 0.0901 s 2 (37): 0.0903 s 3 (36): 0.0905 s 4 (25): 0.0906 s 5 (64): 0.0908 s 6 (40): 0.0909 s 7 (79): 0.0911 s 8 (18): 0.0912 s 9 (46): 0.0914 s ... 445 (170): 0.1514 s ... 456 (8): 0.1529 s 457 (8): 0.1530 s 458 (1): 0.1532 s 459 (2): 0.1533 s 460 (3): 0.1535 s 461 (2): 0.1536 s 462 (0): 15.0910 s In der Klammer stehen die gelesenen Bytes, Zeile 445 ist die längste und damit immer noch unter 1024. Das Warten passiert erst am Ende. Daß es hier (reproduzierbar) glatt 15 Sekunden sind, läßt mich einen Timeout-Wert und kein korrektes EOF vermuten. Da aber sowohl Browser als auch curl, file() und file_get_contents() die Seite in 0,14 s laden, müssen die wohl irgendwas anders machen. Aber was? |
| | |
| | ||
| Erfahrener Benutzer Registriert seit: 17.10.2003
Beiträge: 243
![]() | Zitat:
Ich erwarte von jedem der Hilfe sucht das gleiche was ich auch immer mache. 1. Dokumentation lesen 2. Googeln 3. Boardsuche benutzen ![]() Und eine Lösung haben wir damals auch nicht gefunden. Meine Vermutung ist, das es einen Implementationsfehler in PHP beim Webaccess über fgets gibt. Da du die Seiten mittels fgets ließt... stellst du auch sicher das der Webserver ein Signal bekommt, das der Client die Daten erhalten hat? Du hast eine 2-Wege Kommunikation mittels TCP aufgemacht und ich kann mir durchaus vorstellen, das der Webserver brav auf ein RECEIVED o.ä. wartet und nach einem eigenen Timeout dann die Verbindung abbricht. | |
| | |
| | ||
| Erfahrener Benutzer Registriert seit: 30.06.2004
Beiträge: 619
![]() | Zitat:
Wenn das so wäre, gibt es die Möglichkeit, dieses Signal manuell zu übermitteln und wann? Mit einem neuen fputs() nach jedem fgets()? Aber ich bin hier vielleicht nicht unbedingt auf fsockopen angewiesen, wenn mir jemand einen Tip geben kann, wie ich z. B. bei curl den Host-Header beeinflussen kann ... | |
| | |
| | ||
| Erfahrener Benutzer Registriert seit: 17.10.2003
Beiträge: 243
![]() | Auf der Seite von CURL habe ich folgendes gefunden zu deiner Frage: Zitat:
| |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php fsockopen fgets, php fsock, while(!feof($fp)), php fgets timeout, while feof, fsockopen php, fsockopen feof, php fsockopen feof, fsockopen fgets dauert, fsockopen while, fsockopen dauert lange, feof fsockopen, while (!feof($fp)), while(!foef, fgets dauert lange, while (!feof($fp)) {, fread fsockopen dauert lange, http://www.php.de/php-fortgeschrittene/8877-fsockopen-while-feof-fp-dauert-bei-manchen-servern-15-s.html, dokumentation fsockopen, fsockopen timeout |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.