è una questione di protocollo HTTP.
HTTP 1.1 prevede la possibilità di fare richieste multiple sullo stesso socket senza chiudere la connessione. Per http 1.1 questa è la situazione di default (Connection: persistent).
Il tuo script non va in loop semplicemente il feof() non ritorna mai poichè deve essere il client a decidere di troncare la connessione. Con una connessione persistente il client riveve la risposta e quando questa è finita puo' farne un'altra o chiudere. Questo però pone dei problemi nel capire quando la risposta è finita... (leggi il link di sotto)
Con Connection close (unico metodo per http 1.0) la connessione viene chiusa dopo la risposta del server.
Se provi a fare un
GET /intl/it/about.html HTTP/1.0
vedrai che funziona perchè la connessione persistente non è supportata da http 1.1
Leggiti anche questo:
http://forum.html.it/forum/showthrea...hreadid=973481