Функции Язык программирования PHP

socket_listen

(PHP 4 >= 4.1.0)

socket_listen - прослушивает соединение на сокете.

Описание

bool socket_listen (resource socket [, int backlog])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

После того как сокет socket создан с помощью socket_create() и связан с именем с помощью socket_bind(), он может прослушивать входящие соединения в сокете socket.

Для процессинга в очередь ставится максимум backlog соединений. Если запрос соединения достигает заполненной очереди, клиент может получить ошибку с указанием ECONNREFUSED или, если протокол допускает ретрансмиссию, запрос может быть проигнорирован, поэтому возможны повторные попытки.

Примечание: максимальное количество, передаваемое в параметр backlog, сильно зависит от платформы. В linux оно втихую обрезается до SOMAXCONN. В win32, если передано SOMAXCONN, провайдер сервиса отвечает за установку backlog сокета в максимальное разумное значение. На этой платформе нет стандарта для установки реального backlog-значения.

socket_listen() применяется только для сокетов типа SOCK_STREAM или SOCK_SEQPACKET.

Возвращает TRUE при успехе, FALSE при неудаче. Код ошибки можно запросить функцией socket_last_error(). Этот код может быть передан в socket_strerror() для получения текстового объяснения ошибки.

См. также socket_accept(), socket_bind(), socket_connect(), socket_create() и socket_strerror().


Назад Оглавление Вперёд
socket_last_error Вверх socket_read

Утверждения/Assertions

Разные утверждения (любого вида) могут следовать друг за другом. Например,

(?<=\d{3})(?<!999)foo

совпадает с "foo" с предшествующими тремя цифрами, которые не являются "999". Заметьте, что каждое утверждение применяется независимо в той же точке строки-субъекта. Сначала выполняется проверка, что предшествующие три символа это цифры, затем проверяется, что эти же три цифры не являются числом "999". Этот патэрн не совпадает с "foo" с предшествующими шестью цифрами, первые из которых являются цифрами, а последние три не образуют "999". Например, он не совпадает с "123abcfoo". Это сделает патэрн

(?<=\d{3}...)(?<!999)foo

На этот раз первое утверждение просматривает предшествующие шесть символов, проверяя, что первые три являются цифрами, а затем второе утверждение проверяет, что предшествующие три символа не являются "999".

Утверждения могут вкладываться в любом сочетании. Например,

(?<=(?<!foo)bar)baz

совпадает с "baz" с предшествующим "bar", перед которым, в свою очередь, нет "foo", а

(?<=\d{3}(?!999)...)foo

это другой патэрн, который совпадает с "foo" с предшествующими тремя цифрами и любыми тремя символами - не "999".

Субпатэрны утверждений не являются захватывающими субпатэрнами и не могут повторяться, поскольку нет смысла утверждать одно и то же несколько раз (это смотря в какой стране ... - прим. перев.). Если утверждение любого типа содержит захватывающие субпатэрны, они обсчитываются для целей нумерации захватывающих субпатэрнов всего патэрна. Однако захват подстрок выполняется только для положительных утверждений, так как это не имеет смысла для отрицательных утверждений.

Утверждения обсчитываю максимум до 200 субпатэрнов.