полудух
Итсист
приветствую
изучаю вопрос буферов libevent...
есть такая замечательная документация от IBM на русском под C++
в ней написано:
но тут человек изображает демона и к буферами подходит несколько иначе:
собственно, он создаёт новый буфер на каждое подключение
правильно то было бы создать буфер 1 раз под конкретный сокет, а дальше просто снимать с него данные
поэтому ИЩУ ИСТИНУ с вашей помощью ) поясните, как должно быть
а ещё такой вопрос: если у меня ожидаются редкие подключения с передачей ~20 байт (команда демону)
нужны мне эти буферы вообще?
изучаю вопрос буферов libevent...
есть такая замечательная документация от IBM на русском под C++
в ней написано:
т.е. буфер УЖЕ создан был1. Основные концепции
Идея относительно проста: данные помещаются в буфер (или извлекаются из буфера) в ответ на определённое событие, произошедшее на объекте, для которого был создан этот буфер.
но тут человек изображает демона и к буферами подходит несколько иначе:
PHP:
$socket = stream_socket_server(“tcp://$IP:$port“, $errno, $errstr); // наблюдаемый объект (дескриптор)
stream_set_blocking($socket, 0); // устанавливаем в неблокируемый режим
event_set($event, $socket, EV_READ | EV_PERSIST, 'onAccept', $base); // устанавливаем обработчик на дескриптор
function onAccept($socket, $flag, $base) { // функция обработчик на появление нового соединения
global $id,$buffers,$ctx_connections;
$id++;
$connection = stream_socket_accept($socket);
stream_set_blocking($connection, 0);
$buffer = event_buffer_new($connection, 'onRead', NULL, 'onError', $id); // создаем новый буфер и привязываемем обработчики на чтение/запись в буфер или ошибку обработи.
event_buffer_base_set($buffer, $base); // присоединяем буфер к базовому контексту
event_buffer_enable($buffer, EV_READ | EV_PERSIST); // устанавливаем флаги
$ctx_connections[$id] = $connection;
$buffers[$id] = $buffer;
}
что идёт несколько вразрез с логикой и документацией от IBM$buffer = event_buffer_new($connection, 'onRead', NULL, 'onError', $id); // создаем новый буфер и привязываемем обработчики на чтение/запись в буфер или ошибку обработи.
правильно то было бы создать буфер 1 раз под конкретный сокет, а дальше просто снимать с него данные
поэтому ИЩУ ИСТИНУ с вашей помощью ) поясните, как должно быть
а ещё такой вопрос: если у меня ожидаются редкие подключения с передачей ~20 байт (команда демону)
нужны мне эти буферы вообще?