|
btpd
|
Требования для сборки:
В процессе сборки будут автоматически подгружены необходимые модули Boost и PHP-CPP, а также подключены необходимые git-субмодули. Сам phpbtp-client.so будет собран в статике и не будет зависеть он сторонних .so. В случае успешной сборки в директории ./extension:
Это сработает только если PHP установлен по стандартным путям, в противном случае нужно в ручную скопировать phpbtp-client.so и phpbtp-client.ini в необходимые директории для расширений PHP.
Для проверки работоспособности можно запустить:
Если не будет ошибок, значит расширенее установлено успешно. Данные отправляются по UDP, поэтому ошибок подключения к серверу btpd не будет. В конфигурации по умолчанию phpbtp-client.conf указан адресс 127.0.0.1, а в примерах конфигурации btpd скорее всего 0.0.0.0. Чтобы получить данные с тестовго скрипта в конфигурации расширения нужно изменить поля addr (или в конфигурации демона addr установить в 127.0.0.1, если предполагается, что он будет работать локально).
Подробное описание опций смотрите в комметариях файла конфигурации phpbtp-client.conf. Здесь отмечу пару не очевидных моментов.
Демон btpd может работать по двум протоколам на разных портах. В примерах конфигураций которые с ним идут это порт 38001 для класического JSON-RPC и порт 38000 для так называемого копактного JSON-RPC, они не совместимы между собой. Расширение phpbtp-client.so может работать с тем или иным, в зависимости от конфигурации. Предоставляемый файл конфигурации работает с компактным вариантом. Опция "json_compact": true указывает то, что сообщения нужно отпаравлять в компактном варианте. Если нужен класический JSON-RCP то помимо установки "json_compact": false нужно также сменить порты на 38001. В случе если ошибетесь с портами в логах phpbtp-client.so (по умолчанию отключены) ошибок вы не увидите, но вы эти ошибки увидите в логах демона btpd
Компактный JSON-RPC сериализует все структуры params в массивы JSON где каждый элемент массива соответствует полю структуры, уменьшая таким образом размер сериализованного JSON. Это очень не удобно если вы пытаетесь записать или анализировать компактный JSON в ручную, но на програмном уровне это очень похоже на бинарные протоколы, с той лишь разницей, что сохраняеться какая-никая читабельность. Библиотека wjson которая исползуеться для сериализации как в расширении phpbtp-clientтак и на демоне btpd не сильно уступает тому же protobuf в производительности по сериализации даже для классического JSON, но компактный вариант JSON может не уступать protobufпо размеру сериализованного сообщения и даже первосходить его частных случаях (например когда передаётся много 0).
Вся конфигурация в JSON-файле
Для ручной сборки на repobuild4 или repobuild3:
Для сборки под CentOS нужно установлить cmake3 и задать переменную CMAKE:
В случае успешной сборки в директории build/bin:
Эти файлы нужно перенести на целевую машину и выполнить make install
Требования:
./b2 link=static runtime-link=static