Что за коды получает errorcb в event_buffer_new?

EugeneVB

Новичок
вот код
PHP:
$buffer = event_buffer_new($connection, 'readHand', NULL, 'errorHand');
function errorHand($buffer, $error) 
{
	
}
постоянно в качестве error получаю 65 и 17, не могу найти, что они значат
 
PHP:
<?php
$consts = get_defined_constants();
foreach ($consts as $name => $value)
{
	if (strpos(strtoupper($name), 'EV') === 0)
	{
		echo $name . ' = ' . $value . '<br/>';
	}
}
?>

EV_TIMEOUT = 1
EV_READ = 2
EV_WRITE = 4
EV_SIGNAL = 8
EV_PERSIST = 16
EVLOOP_NONBLOCK = 2
EVLOOP_ONCE = 1
EVBUFFER_READ = 1
EVBUFFER_WRITE = 2
EVBUFFER_EOF = 16
EVBUFFER_ERROR = 32
EVBUFFER_TIMEOUT = 64

65 = 1 + 64 = EVBUFFER_READ | EVBUFFER_TIMEOUT
17 = 1 + 16 = EVBUFFER_READ | EVBUFFER_EOF

Могу ошибаться, впрочем.
 
Если это о том, что я думаю - чтение на евенте с сокета, то там всегда есть два типа ошибок, как раз то, о чем говорит флоппик, это
1. EVBUFFER_READ | EVBUFFER_TIMEOUT - Connection timeout (отрубился инет, коннект поравался во время передачи).
2. EVBUFFER_READ | EVBUFFER_EOF - Connection reset by pear - коннект оборван той стороной во время трансфера или получен конец передачи.

http://www.slideshare.net/psihius/php-daemons-new

Лучше все же писать демоны на чистом языке (c, c++)
 
c 17 стало ясно, получаю при отключении клиента,
а вот 65 вызывает вопросы
судя по названию, да и методом тыка выяснено, что этот код я получаю при отсутствии активности определенное время, если регулярно передаю данные, соединение держится.
я посчитал, что стоит добавить второй аргумент в
PHP:
$connection = stream_socket_accept($socket,10000);
однако это не помогло.

ВСЁ, ЯСНО
вот что
PHP:
event_buffer_timeout_set()
 
Есть желание добавить примеры в документацию?
Четкие понятные самодостаточные куски кода (чтоб можно было скопировать и выполнить).
Шлите мне, я добавлю.
 
Лично мне не стоит писать примеры, всё-таки по ним люди учатся.
Сам делал по этим примерам ссылка
Не хватает примера с таймерами, насколько я понял, вариант с временным файлов это костыль и благодаря собственно Вам теперь есть поддержка.
Но нигде об этом не написано, не могу понять, что написать в качестве $fd в event_set
 
tony2001
За примерами лучше наверное к 440hz и Long, они делали доклад по этой теме - демонизация браузерной игры :D
 
Они мне грозились-грозились, но ничего не прислали в конце концов.
 
private $event_errors = array(
'EVBUFFER_READ' => 1,
'EVBUFFER_WRITE' => 2,
'EVBUFFER_EOF' => 16,
'EVBUFFER_ERROR' => 32,
'EVBUFFER_TIMEOUT' => 64
);

private function handler_error_event($client, $error_ids, $params) {
$error = array();
foreach ($this->event_errors as $error_type => $error_code) {
if ($error_ids & $error_code) {
array_push($error, $error_type);
}
}
echo 'error event #'.$error_ids.' '.join(' | ', $error)."\n";
}
 
странно, а зачем эти константы в массив загонять в таком виде?
я их добавил уже больше года назад в экстеншен, они точно есть в 0.0.4.
 
честно говоря, не понимаю о чем вы.

я про это:
> 'EVBUFFER_READ' => 1,

значения констант зачем цифрами забивать?
непонятно просто зачем тогда сами константы нужны, если всё равно используются их значения.
 
Понял, да, логично, забивал для того, чтобы самому разобраться где что, так как недокументированы они
 
Сверху