Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Ну вот в вышеприведённом примере как раз та же... Если разные - понятно, что дескрипторы сохраняются.
При открытии сокета (как и файла) создаётся дескриптор потока, который передаётся $fp. Вопрос только - по ссылке, или по значению? Так как потоком можно управлять в процессе чтения данных, то, видимо, по ссылке. Получается, что при присвоении $fp нового значения, старый дескриптор пропадает.
Но какое-то это хлипкое объяснение, не исключено, что неверное. А хотелось бы услышать что-нибудь чёткое. Чтоб постучать себя по лбу и сказать "Ну конечно, как я тупил"
Я думаю PHP сам подчищает, если дескриптор был изменён, то тогда старый будет закрыт, так как connect() это системная команда и большими циклами можно всю систему повесить