Skip to content

Latest commit

 

History

History
84 lines (47 loc) · 4.62 KB

README.md

File metadata and controls

84 lines (47 loc) · 4.62 KB

schedule-service*

Сервис (демон для автоматического уведомления о заменах в расписании) Работает через стороннее API. Сервис разделен на 2 сервиса.

  1. bot.php -- сервис обработки команд пользователей, введенных через сообщения сообщества (+ в беседах)
  2. notifications.php -- сервис автоматического поиска и уведомления о заменах

Зависимости

В проекте задействованны:

  1. notm/vk-execute-builder -- построитель EXECUTE запросов
  2. vkcom/vk-php-sdk -- Оффициальный PHP SDK от VK
  3. krugozor/database -- библиотека классов на PHP >= 5.3 для простой, удобной, быстрой и безопасной работы с базой данных MySql, использующая расширение PHP mysqli.

Установка и запуск

Настройка под Ubuntu 16.04-18.04.3 (systemd, php-cli 7.3)

  1. Залить папку с сервисами на сервер.

  2. Установить и настроить PHP 7.3, php-curl, php-json, php-mysqli, php-mbstring.

  3. Заполнить config.php

  4. Залить в папку /etc/systemd/system/, настроить bot_vk.service (указать корневую папку проекта)

  5. Залить в папку /etc/systemd/system/, настроить bot_notify.service (указать корневую папку проекта)

  6. Проверяем сервисы systemctl -i status bot_vk и systemctl -i status bot_notify

  7. Автозапуск сервисов systemctl enable bot_vk и systemctl enable bot_notify

  8. Запускаем сервисы systemctl start bot_vk и systemctl start bot_notify

  9. Перезагрузка сервисов systemctl daemon-reload (когда необходимо)

"Тесты"

Проект не тестировался больше 1-2 часов, могут быть ошибки, недоработки, неуместные усложнения и т.д.

  1. Ubuntu 18.04.3 (тест в качестве сервиса systemd, php-cli 7.3, php-curl, php-json, php-mbstring, внешняя mysql база данных)

  2. По приколу на 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 база данных)

  3. Windows 10 в PHPStorm 2018.3.6. (тест в консоли, php-cli 7.3, php-curl, php-json, php-mbstring, внешняя mysql база данных

Краткий алгоритм работы поиска замен

  1. Проверяем API на наличие изменений.

  2. Если изменения найдены

2.1. Проверяем актуальность замен по полям дата_вступления_замены и имя_замены (проверяем что такой замены нет в базе, иначе -- игнорим

2.2. Считываем содержимое *.doc файла замены.

2.3. Ищем в заменах инициалы преподавателей и группы (по регуляркам).

2.4. Записываем все что нашли в базу данных.

  1. Авто удаление замен из базы

3.1. Ищем все устаревшие замены.

3.2. Чистим сохранённые теги для этих замен

3.3. Чистим информацию о заменах

  1. Рассылка уведомлений об изменениях в расписании.

4.1. Выбираем по 20 заданий для уведомления (задания формируются во время исполнения этапа п. 2.4).

4.2. Определяем тип задания (ответить пользователю в вк, ответить на почту(не реализовано), и т.д.)

4.3. При отправке через ВК, формируем execute запрос.

4.4. Удаляем задания из списка.

  1. Возвращаемся к п. 4. и смотрим есть ли еще замены.

  2. Определяем сколько времени нам осталось спать до следующего пробуждения.

  3. Спим.

  4. Просыпаемся, повторяем п. 1.