- Версия PHP
- 8.0
- 8.3
Это веб-терминал с аутентификацией. Страница использовалась в старых ивентах на маленькой аудитории.
Дизайн и идея позаимствованы от разработчиков Escape from Tarkov. Они проводили/проводят подобный ивент с сюжетной линией завязанной на игре, со входом в терминал, поиске подсказок в игре и внутри терминала. Попытался повторить их логику сайта легким набором инструментов. Сайт имитирует интерфейс командной строки, вводит команды и смотрит анимированный bg.
- Как запустить
Настроить config/config.php под ваш сервер MYSQL
Написать логику ajax.php под ваш ивент (примеры внутри доступны)
Загрузить на веб сервер
- Стек
Backend | PHP 8.0+
MySQL 5.7+ / 8.0+
DB | PDO
Frontend | jQuery 4.0, Vanilla JS, CSS3
- Структура проекта
terminaljs-main/
├── ajax.php - API-endpoint
├── index.php - Frontend, генерация сессии
├── dump.sql - Дамп БД
├── config/
│ └── config.php - Настройка БД
├── includes/
│ ├── bootstrap.php - Инициализация
│ └── DB.php - PDO обертка
└── assets/ - прочее
- Расширения PHP
pdo
pdo_mysql
session
fileinfo (необязательно, в моей логике для getimagesize()) + allow_url_fopen = On в php.ini
- На будущее (что стоит исправить)
MySQL max_connections - каждый запрос к ajax.php новое соединение Mysql. При default настройке max_connections = 151, количество одновременных запросов равно числу этого значения. При высокой нагрузке прочие соединения просто будут дропаться (Too many connections).
Решение 1: настройки сервера + в includes/DB.php делаем пул соединений PDO::ATTR_PERSISTENT => true,
Решение 2 (мое на проде): прокидывать все подключения через nodejs пул по старинке. кода нет, реализовывать самостоятельно.
Дизайн и идея позаимствованы от разработчиков Escape from Tarkov. Они проводили/проводят подобный ивент с сюжетной линией завязанной на игре, со входом в терминал, поиске подсказок в игре и внутри терминала. Попытался повторить их логику сайта легким набором инструментов. Сайт имитирует интерфейс командной строки, вводит команды и смотрит анимированный bg.
- Как запустить
Настроить config/config.php под ваш сервер MYSQL
Написать логику ajax.php под ваш ивент (примеры внутри доступны)
Загрузить на веб сервер
- Стек
Backend | PHP 8.0+
MySQL 5.7+ / 8.0+
DB | PDO
Frontend | jQuery 4.0, Vanilla JS, CSS3
- Структура проекта
terminaljs-main/
├── ajax.php - API-endpoint
├── index.php - Frontend, генерация сессии
├── dump.sql - Дамп БД
├── config/
│ └── config.php - Настройка БД
├── includes/
│ ├── bootstrap.php - Инициализация
│ └── DB.php - PDO обертка
└── assets/ - прочее
- Расширения PHP
pdo
pdo_mysql
session
fileinfo (необязательно, в моей логике для getimagesize()) + allow_url_fopen = On в php.ini
- На будущее (что стоит исправить)
MySQL max_connections - каждый запрос к ajax.php новое соединение Mysql. При default настройке max_connections = 151, количество одновременных запросов равно числу этого значения. При высокой нагрузке прочие соединения просто будут дропаться (Too many connections).
Решение 1: настройки сервера + в includes/DB.php делаем пул соединений PDO::ATTR_PERSISTENT => true,
Решение 2 (мое на проде): прокидывать все подключения через nodejs пул по старинке. кода нет, реализовывать самостоятельно.