- Выдерживает более 30 запросов/сек. (на демо-проекте держится постоянная нагрузка 150-200 rps)
- Страницы админки отдаются в среднем менее чем за 200 мс (счетчик времени ответа сервера присутствует в футере каждой страницы)
- Умеет отмечать пользователей, запросивших более порогового значения разных адресов (такие помечаются как "заинтересованные"):
- Строит графики нагрузки на систему, на пиксели и активности юзеров в реальном времени: демо
- Позволяет вести параллельный мониторинг нескольких пикселей: демо
- Отображает статистику по каждому пикселю и позволяет настраивать порог срабатывания пометки "заинтересованный": демо
- Отображает статистику по каждому пользователю: демо
- Умеет искать по всем пикселям и пользователям (поисковое поле в шапке)
- Склонировать репозиторий
- Настроить веб-сервер на отдачу всей статики (*.css|js|jpg|eot|svg|ttf|woff) из директории public/
- Все остальные запросы реврайтить на public/index.php/$request
- В случае apache можно взять готовый .htaccess из корня репозитория:
RewriteEngine On
RewriteBase /pixelf
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?!public)(.*\.(css|js|png|jpg|gif|otf|eot|svg|ttf|woff|crx|swf))$ public/$1 [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?!public)(.*)$ public/index.php/$1 [L,QSA]
- Для случая nginx+php-fpm привожу типичный конфиг:
server {
listen 80;
server_name pixelf.penyaev.com;
location ~* ^.+\.(jpg|jpeg|gif|png|js|css|html|xml)$ {
root /home/sites/pixelf/public;
}
location / {
rewrite ^ /index.php;
}
location ~ ^/index.php$ {
root /home/sites/pixelf/public;
fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
- Накатить дамп базы данных из sql/up.sql (разработчик пользовался mysql-5.6.12)
- Удостовериться, что в установке php (5.5.12) присутствует и включен mysqlnd
- Проверить, что проект открывается в браузере
- Чтобы было не так грустно, проект можно наполнить тестовыми данными и включить симуляцию нагрузки, для этого:
- Создать 1000 пикселей (случайным образом: используется словарь самых популярных английских слов для доменов 2-го уровня и список существующих TLD):
- Включаем эмуляцию нагрузки: ```php public/console.php click load
```1000 requests done (total 112000) within last 5.0 seconds, avg rps=199.17
Система была написана с нуля в довольно сжатые сроки, поэтому не претендует на звание законченного продукта. Это где-то около MVP, демонстрирующего основной функционал. Во многих частях системы не предусмотрена проверка входных данных и слабо настроен отлов ошибок: автор не преследовал цели написать production-ready систему, задачей его стояло сделать "каркас", реализующий базовые возможности. Одним из условий был отказ от ООП, поэтому по ходу дела был написан свой мини-фреймворк.