Сервис (демон для автоматического уведомления о заменах в расписании) Работает через стороннее API. Сервис разделен на 2 сервиса.
bot.php
-- сервис обработки команд пользователей, введенных через сообщения сообщества (+ в беседах)notifications.php
-- сервис автоматического поиска и уведомления о заменах
В проекте задействованны:
notm/vk-execute-builder
-- построитель EXECUTE запросовvkcom/vk-php-sdk
-- Оффициальный PHP SDK от VKkrugozor/database
-- библиотека классов на PHP >= 5.3 для простой, удобной, быстрой и безопасной работы с базой данных MySql, использующая расширение PHP mysqli.
Настройка под Ubuntu 16.04-18.04.3 (systemd, php-cli 7.3)
-
Залить папку с сервисами на сервер.
-
Установить и настроить PHP 7.3, php-curl, php-json, php-mysqli, php-mbstring.
-
Заполнить
config.php
-
Залить в папку
/etc/systemd/system/
, настроитьbot_vk.service
(указать корневую папку проекта) -
Залить в папку
/etc/systemd/system/
, настроитьbot_notify.service
(указать корневую папку проекта) -
Проверяем сервисы
systemctl -i status bot_vk
иsystemctl -i status bot_notify
-
Автозапуск сервисов
systemctl enable bot_vk
иsystemctl enable bot_notify
-
Запускаем сервисы
systemctl start bot_vk
иsystemctl start bot_notify
-
Перезагрузка сервисов
systemctl daemon-reload
(когда необходимо)
Проект не тестировался больше 1-2 часов, могут быть ошибки, недоработки, неуместные усложнения и т.д.
-
Ubuntu 18.04.3 (тест в качестве сервиса systemd, php-cli 7.3, php-curl, php-json, php-mbstring, внешняя mysql база данных)
-
По приколу на DIR-320 NRU (8 FLASH\32 RAM)(своп+перенос корневой системы на usb-flash) OpenWrt 18.06.6 (тест в рамках ssh сессии, php-cli 7.3, php-curl, php-json, php-mbstring, внешняя mysql база данных)
-
Windows 10 в PHPStorm 2018.3.6. (тест в консоли, php-cli 7.3, php-curl, php-json, php-mbstring, внешняя mysql база данных
-
Проверяем API на наличие изменений.
-
Если изменения найдены
2.1. Проверяем актуальность замен по полям дата_вступления_замены и имя_замены (проверяем что такой замены нет в базе, иначе -- игнорим
2.2. Считываем содержимое *.doc файла замены.
2.3. Ищем в заменах инициалы преподавателей и группы (по регуляркам).
2.4. Записываем все что нашли в базу данных.
- Авто удаление замен из базы
3.1. Ищем все устаревшие замены.
3.2. Чистим сохранённые теги для этих замен
3.3. Чистим информацию о заменах
- Рассылка уведомлений об изменениях в расписании.
4.1. Выбираем по 20 заданий для уведомления (задания формируются во время исполнения этапа п. 2.4
).
4.2. Определяем тип задания (ответить пользователю в вк, ответить на почту(не реализовано), и т.д.)
4.3. При отправке через ВК, формируем execute запрос.
4.4. Удаляем задания из списка.
-
Возвращаемся к
п. 4.
и смотрим есть ли еще замены. -
Определяем сколько времени нам осталось спать до следующего пробуждения.
-
Спим.
-
Просыпаемся, повторяем
п. 1.