Официальный сайт студ.городка НГТУ
Программирование и БД » [php] сокеты 

#1  06.01.07 03:27

[php] сокеты

Код: php:

$fp = fsockopen("127.0.0.1", 13);
if (!$fp) {
// что-то делаем
} else {
// что-то делаем
    fclose($fp);
}

вся конструкция в цикле

Проблема в том что после прохода цикла  часть конектов остаеться.
кто-нибудь знает в чем проблема и как ее можно решить.

Offline

#2  06.01.07 10:23

Re: [php] сокеты

materazzi написал(а):

Проблема в том что после прохода цикла  часть конектов остаеться.

в каком состоянии?

Offline

#3  06.01.07 10:37

Re: [php] сокеты

Matrim, close_wait

Offline

#4  06.01.07 10:51

Re: [php] сокеты

Код: php:

<?php
$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
if (!$fp) {
    echo "ERROR: $errno - $errstr<br>\n";
} else {
    fwrite($fp,"\n");
    echo fread($fp, 26);
    fclose($fp);
}
?>


Если вызов терпит неудачу, возвращается FALSE и, если необязательные аргументы errno и errstr имеются, они получат установки, указывающие фактический уровень системной ошибки, возникшей при вызове connect() системного уровня. Если в errno возвращено значение 0 и функция возвращает FALSE, это указывает на то, что ошибка возникла до вызова connect(). Вероятнее всего это произошло из-за проблем инициализации сокета. Заметьте, что аргументы errno и errstr всегда будут передаваться по ссылке.

Offline

#5  06.01.07 11:04

Re: [php] сокеты

Karminsky написал(а):

Если вызов терпит неудачу, возвращается FALSE и ...

мимо

проблема в том, что в недрах пхп что-то удерживает сокет

в сообщении Севы есть 1 полезный момент - использовать udp протокол для daytime, можно попробовать этот вариант. или попробовать выставить таймаут для сокета явно и посмотреть на его поведение.

Offline

#6  06.01.07 11:11

Re: [php] сокеты

т.е. ошибка в fsocksopen не может произойти после установления соедения?

Offline

#7  06.01.07 11:57

Re: [php] сокеты

Karminsky написал(а):

т.е. ошибка в fsocksopen не может произойти после установления соедения?

если соединение уже установлено, то это означает, что fsockopen уже сделал свою работу и в нем уже ошибка произойти не может

в выдранном тобою куске хелпа говорится, что функция в любом случае возвращает false, только в одном случае errno будет равен нулю, а в другом - нет, и это зависит от того, где именно произошла ошибка.

Offline

#8  06.01.07 12:04

Re: [php] сокеты

grand merci, значит неправильно читал маны :(

Offline

Программирование и БД » [php] сокеты 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.090 сек.
Выполнено 14 запросов.