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

socket_write

(PHP 4 >= 4.1.0)

socket_write - записывает в сокет.

Описание

int socket_write (resource socket, string buffer [, int length])

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

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

Функция socket_write() записывает в сокет socket из буфера buffer.

Необязательный параметр length может специфицировать альтернативную длину байтов, записываемых в сокет. Если параметр length больше длины буфера, он скрыто усекается до длины буфера.

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

Примечание: socket_write() не обязательно записывает все байты из данного буфера. В зависимости от сетевых буферов etc., записывается только определённое количество данных, даже один байт, даже если ваш буфер больше. Вы должны отследить, чтобы не забыть случайно, передачу остатка ваших данных.

Примечание: для socket_write() совершенно правильным будет возврат 0, что означает отсутствие записанных байтов. Используйте операцию === для проверки FALSE в случае ошибки.

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


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

Once-only/"Однократные" субпатэрны

Однократные субпатэрны не являются захватывающими субпатэрнами. Простые случаи, вроде вышеприведённого примера, можно представить как максималистское построение, которое поглощает всё, что может. Так, в то время как \d+ и \d+? подготовлены так, чтобы уточнять число цифр для совпадения с ними, чтобы совпала остальная часть патэрна, (?>\d+) может совпадать только с полной последовательностью цифр.

Эта конструкция, разумеется, может содержать произвольно усложнённые субпатэрны и может вкладываться.

Однократные субпатэрны можно использовать в сочетании с утверждениями назад для специфицирования эффективного совпадения в конце строки-субъекта. Рассмотрим такой простой патэрн:

abcd$

применённый к длинной строке, с которой он не совпадает. Поскольку совпадение выполняется слева направо, PCRE будет искать каждую "a" в субъекте, а затем посмотрит, что из последующего совпадает с остатком патэрна. Если патэрн специфицирован так:

^.*abcd$