Повторное открытие fsockopen()

Аlex

Новичок
Повторное открытие fsockopen()

PHP:
for(...) {  
$fp = fsockopen($addr, $port, $n, $s, $server_timeout);     
fwrite($fp, $data);  
}
Будет ли каждый раз убиваться старое соединение?
 

vadim

Guest
Аlex
Если только не ту же переменную используйте
Тоже самое, что и с локальными файлами
 

Трам-пам-пам

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

vadim

Guest
Я думаю PHP сам подчищает, если дескриптор был изменён, то тогда старый будет закрыт, так как connect() это системная команда и большими циклами можно всю систему повесить
 
Сверху