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