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