Существует некая виртуальная компания, которая занимается предоставлением услуг аренды телефонных номеров.
У этой компании есть ограниченные мощности серверов.
Сервера считаются перегруженными-overload, если в один момент времени обрабатываются более 100 звонков.
Руководитель компании хочет держать руку на пульсе и поэтому хочет видеть информацию из журнала в двух разрезах.
Часть работ по формированию представлений уже выполнена. Описана в абстрактном классе CallsReport, который имеет ряд зависимостей.
Журнал звонков. Файл data.json приложен к этому заданию. Формат:
[
{
"start_date_time": "2020-01-27 00:02:45", //Метка веремени начала звонка. Y-m-d H:i:s
"duration_seconds": "78" //длительность звонка в секундах
},
...
]
Информация из журнала в двух разрезах.
- В какие метки времени (посекундно) в течении одного исследуемого дня были перегрузки серверов
| Метка времени в секундах, Y-m-d H:i:s | Максимальная нагрузка в период времени |
|---|---|
| 2020-01-27 12:42:28 | 201 |
| 2020-01-27 15:48:28 | 101 |
- Поминутная динамика максимального количества одновременных звонков. Без пропусков минут
| Метка времени в минутах, Y-m-d H:i | Максимальная нагрузка в период времени | Наличие перегрузки сервера |
|---|---|---|
| 2020-01-27 00:01 | 5 | ok |
| 2020-01-27 00:02 | 5 | ok |
| 2020-01-27 01:03 | 105 | overload |
Часть работ по формированию представлений уже выполнена. Описана в абстрактном классе CallsReport, который имеет ряд зависимостей
- Подключай ClassLoader и вперед. В качестве точки входа можешь использовать index.php
- Реализовать класс наследник от CallsReport
- В методе fillCallDtoSpl класса CallsReport наполнить объект \TestTask\callDtoSpl данными из источинка data.json
- Вывести результат посекундной перегрузки сервера в таблицу метод buildServerOverLoadTable
- Вывести результат поминутной нагрузки (без пропуска минут даже если не было звонков) на сервера в таблицу метод buildServerLoadTable