Мне нужно отладить сокет-соединение, которое мой PHP-интерфейс делает для бэкэнд-сервиса на другом хосте, и мне нужно сделать это как можно ближе к металлу, насколько это возможно. Я уже абстрагировал соединение на разных уровнях, что, среди прочего, дает мне возможность подключить stream filters к соединению. Поэтому проблему нужно очень легко решить: упакуйте фильтр потока в класс, который позволяет выполнять произвольные обратные вызовы, когда данные отправляются или принимаются, а затем, например, присоединяют их к нескольким файлам журнала.Регистрация фильтра потока для PHP?
Единственная проблема заключается в том, что мое (наивное?) Ожидание того, что должна быть некоторая такая реализация фильтра, плавающая в Интернете, кажется неправильной! Я не против писать фильтр самостоятельно, но, может быть, есть что-то доступное, что мне просто не удалось найти?
Для справки я сделал google много очевидных изменений в «php logging stream filter».
Update: Чтобы уточнить, что я ищу что-то, что позволит мне писать код нравственно эквивалентный этому:
$params = array(
'onDataSent' => function($data) { echo "Sent: $data\n"; },
'onDataReceived' => function($data) { echo "Received: $data\n"; },
);
stream_filter_register('logging', 'HookableStreamFilter');
stream_filter_append($someStream, 'logging', STREAM_FILTER_ALL, $params);
не уверен, что я понимаю, что вы ищете, но будет ли http://php.net/manual/en/function.stream-notification-callback.php вариантом? Это позволит вам подключаться к определенным событиям потока. – Gordon
@Gordon: Это не сократит его, потому что я заинтересован в получении фактических данных из потока, чтобы я мог его зарегистрировать. Даже если бы это было так, то, что я ищу, было бы тем, что функциональность упакована в класс с разумным API. Я сделаю редактирование, чтобы показать пример кода. – Jon
Есть ли у вас определения интерфейса вашей абстракции? – hakre