Сервис рассылки сообщений
Установка php-ws
1 Папка с программой распространяется с основным обновлением программы, путь = /tools/php-ws.
2 Переименовать файл config.php.tmpl в config.php и при необходимости отредактировать его, значение параметров в конфиге прокоментировано.
3 В программе на форме «Настройки сообщений пользователям» прописать адреса вебсокет сервиса и сервиса API сообщений
Пример настроек установленного сервиса
Параметр | Значение |
---|---|
Адрес внутреннего сервера МФЦ | 192.168.1.100 |
папка внутреннего веб сервера | /var/www/mfc-in/ |
папка сервиса php-ws | /var/www/mfc-in/tools/php-ws |
Настройка в программе «адрес сервиса» | ws://192.168.1.100:8000/websocket/messages |
Настройка в программе «адрес API сообщений» | http://192.168.1.100:11234 |
конфиг php-ws (config.php)
define('MFCPATH', __DIR__ . '/../mfc-in');
define('DEFAULT_ALIVE', 3600);
define('DEFAULT_PERIOD_SHOW', 20);
define('DBLOOPTIME', 3);
define('WSPORT', 8000);
define('APIHTTPPORT',11234);
define('VERSION', file_get_contents( __DIR__ .'/version.txt'));
Запуск php-ws
Запуск производится из командной строки
пример:
папка с программой лежит в /var/www/mfc-in/tools/php-ws
-
открываем терминал
-
переходим в папку с программой
cd /var/www/mfc-in/tools/php-ws
-
запускаем сервер в debug режиме
php index.php start
должна получиться следующая картина
- проверяем работу системы в целом — идем в форму «Менеджер-рассылка сообщений» и отправляем сообщение себе, в течение нескольких секунд оно должно отобразиться. В случае каких — либо проблем(некорректные настройки, права...) в окне терминала будут появляться ошибки
Когда проверка пройдена можно отключить сервер (CTRL+C) в окне терминала и перезапустить сервер продуктивном режиме — в команду дописывается -d.
php index.php start -d
после запуска в продуктивном режиме окно терминала можно закрыть.
Проверить работу программы можно с помощью команды
php index.php status
пример её результата
Дополнительно
В случае завершения работы сервера на форме рассылки сообщений появится соответствующий значек, по клику на него можно посмотреть подробности ошибки
Иногда нужно перезапускать сервер(например при изменении конфигурации) сделать это можно следующим образом:
Выключить сервер можно с помощью команды
php index.php stop
Действия в случае проблем с остановкой службы
-
находим PID процесса
ps -Af | grep WorkerMan
результат : -
видим 2 процесса — 6309 и его дочерний 6310, (6571 — это собственно сам поиск процесса).
-
Принудительно уничтожаем процессы
sudo kill -9 6309
sudo kill -9 6310
9 — означает наивысший приоритет завершения процесса
Возможные ошибки:
-
error opcode XX - встречалось на виндовых серверах. Решение - в php.ini установили mbstring.func_overload=0.
-
frame not masked so close the connection - встречалось на линуксовых серверах. Решение - в php.ini установили mbstring.func_overload=0.
Если в системе 1 файл php.ini, то нужно его скопировать с другим именем, поменять mbstring.func_overload=0, и запускать сервис с указанием этого измененного конфига вот пример команды
php -c /etc/php/php-for-ws.ini index.php start
-
error pcntl - на линуксовых серверах. Доустановили apt-get install php5-pcntl.
-
На форме рассылки сообщений написано, что всё работает, но сообщения не отправляются - проверить с помощью php index.php status есть ли соединения — если нет, значит браузер не может соединиться с сервером. Методика поиска проблемы : Попробовать соединиться вручную из консоли браузера ws.connect(-=строка из настройки «адрес сервера сообщений»=-), после этого значение ws.connection должно быть не пустое, или new WebSocket(-=строка из настройки «адрес сервера сообщений»=-), должен вернуть объект соединения. Если при этом возвращается ошибка — разбираться с ней. Были замечены следующие ошибки :
- The operation is insecure — решение — заходим в настройки браузера (about:config), находим параметр
network.websocket.allowInsecureFromHTTPS
, устанавливаем ему значение «true».
- The operation is insecure — решение — заходим в настройки браузера (about:config), находим параметр
-
При запросе из карточки ошибка, что сервис не настроен - Возможна такая ситуация, когда сервис запущен, но сообщения не отправляются, а при запросе из карточки говорит что сервис не настроен. Методика поиска проблемы : В консоли браузера набрать ws.connection.ReadyState должно вернуть 1. Если вернулось значение например 3, то возможно стандартный порт 8000 чем то занят. Измените порт в конфиге php-ws и в настройках АИС, например на 8500 и перезапустите сервис.