als ik met volgende code een pagina download dan zie je dat het laatste lijntje ontvangen altijd 17 seconden duurt. Dit terwijl de rest van de pagina in minder dan 1 seconde afgerond wordt.
Een oplossing zou zijn bvb de lijn in een variabele zetten en dan 1 seconde wachten en controleren of de lijn nog hetzelfde is. Indien niet ==> fclose($fs);
Maar het probleem hierbij is dat je telkens bijna een seconde verliest en dat dit ook nog redelijk veel is (en moest er bvb een seconde lag zijn, dan denkt hij dat de volledige pagina verstuurd is en dit kan problemen veroorzaken want ik werk soms met strrpos = zoek laatste string)
Heeft niemand een beter voorstel?
PS: Wat zijn die rare tekens telkens tussen de header en de html-tags (in dit geval de fictieve df0)?
PHP:
het resultaat hiervan is:1
2
3
4
5
6
7
8
9
10
| $fs = fsockopen("www.bs.be", 80, $errno, $errstr, 20); $buffer2=""; fputs($fs, $request); while (!feof($fs)) { $buffer2 = fgets($fs, 2048); $datum = date("H:i:s"); echo "$datum ontvangen $buffer2<br>"; $buffer1 .= $buffer2; } fclose ($fs); |
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| 21:00:35 ontvangen HTTP/1.1 200 OK 21:00:35 ontvangen Date: Tue, 09 Aug 2005 18:58:31 GMT 21:00:35 ontvangen Server: Apache/1.3.33 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 PHP/4.3.11 FrontPage/5.0.2.2635 mod_ssl/2.8.22 OpenSSL/0.9.7a 21:00:35 ontvangen X-Powered-By: PHP/4.3.11 21:00:35 ontvangen Expires: Thu, 19 Nov 1981 08:52:00 GMT 21:00:35 ontvangen Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 21:00:35 ontvangen Pragma: no-cache 21:00:35 ontvangen Keep-Alive: timeout=15, max=100 21:00:35 ontvangen Connection: Keep-Alive 21:00:35 ontvangen Transfer-Encoding: chunked 21:00:35 ontvangen Content-Type: text/html 21:00:35 ontvangen 21:00:35 ontvangen df0 21:00:35 ontvangen <html> 21:00:35 ontvangen blabla 21:00:35 ontvangen </html> 21:00:35 ontvangen 0 21:00:35 ontvangen 21:00:52 ontvangen |
Een oplossing zou zijn bvb de lijn in een variabele zetten en dan 1 seconde wachten en controleren of de lijn nog hetzelfde is. Indien niet ==> fclose($fs);
Maar het probleem hierbij is dat je telkens bijna een seconde verliest en dat dit ook nog redelijk veel is (en moest er bvb een seconde lag zijn, dan denkt hij dat de volledige pagina verstuurd is en dit kan problemen veroorzaken want ik werk soms met strrpos = zoek laatste string)
Heeft niemand een beter voorstel?
PS: Wat zijn die rare tekens telkens tussen de header en de html-tags (in dit geval de fictieve df0)?