quberik/application-for-domotehnika
Composer 安装命令:
composer create-project quberik/application-for-domotehnika
包简介
Test application for Domotehnika company
README 文档
README
Реализовано приложение — API для доступа к пользовательским данным через веб. Данные пользователей хранятся в БД. У каждого пользователя есть nick, login и email. Выбор типа возвращаемых данных (json или xml, по выбору клиентского приложения).
Установка приложения
Качаем и устанавливаем Composer
Закачиваем приложение через Composer
composer.phar create-project quberik/application-for-domotehnika -s dev
Создаём пользователя и пароль к базе: user_domotehnika и Amyk9As449MhnO7
Host: localhost (127.0.0.1)
Создаём базу данных
php app/console doctrine:database:create
Открываем консоль. Переходим в директорию проекта и создаём таблицы в базе данных:
php app/console doctrine:schema:update --force
Загружаем фикстуры:
php app/console doctrine:fixtures:load
Устанавливаем сервер ElasticSearch локально. Порт 9200
Запускаем сервер ElasticSearch
Создаём индекс Elastic из базы данных
app/console fos:elastica:populate
Устанавливаем права на папку app/cache и app/logs 777 и всех вложенных файлов и папок
Функциональность приложения
Получение списка пользователей в базе, GETзапрос:
http://your_site.ru/api/user.json
Получение списка пользователей по критерию (nick, login, email), GETзапрос:
http://your_site.ru/api/user.json?search=@hotmail.com
Получение пользователя по id, GETзапрос:
http://your_site.ru/api/user/5.json
Обновление пользователя (изменение ника, email), POSTзапрос:
http://your_site.ru/api/user/5.json
Опционально
- Переключение окружения (development, production):
http://your-site.ru/- prod
http://your-site.ru/app_dev.php/- dev -
Кастомные страницы 404й и 500й ошибок - не совсем понял, что тут имелось ввиду. Сейчас, если клиент делает запрос на сервер и ожидает json, то приходит json ответ с 404 или 500 ошибкой. Если клиент запрашивает xml, то ответ с ошибкой приходит также, только в формате xml.
- Доступ к API осуществляется только авторизованному клиентскому приложению. Логин и пароль:
demoиdemo
Дополнительное задание
Окружение для посещаемости 5 млн
- Linux CentOs, version > 6
- PHP 5.3.3 или выше
- MySql 5.5.33 или выше
- Nginx 1.5.3
- Отключаем Access log
access_log off;в файле nginx.conf - Устанавливаем внутренний кеш PHP - APC
- Так как mysql движок будет использоваться innodb, то устанавливаем размер буфера до 75% (
innodb_buffer_pool_size) от всей доступной памяти на сервере (key_bufferсоответственно уменьшаем) в файле my.cnf. innodb_flush_log_at_trx_commitв этом же файле устанавливаем значение в 0. Значительно повыситься скорость записи при больших объёмах (не нужно буфер записи скидывать на диск после каждой операции).- Включаем внутренний кеш MySQL:
query_cache_size = 32М - Выставляем количество воркеров для Nginx равное количеству ядер
- Переносим сервер ElasticSearch на отдельный сервер или несколько серверов
- Переносим MySQL базу на другой сервер. Можно настроить MySQL репликацию на несколько серверов.
- Включаем кеш Doctrine, файловый кеш
- Вертикальное и горизонтальное масштабирование
- С помощью zabbix следим за нагрузкой и работой узлов системы
- Ну и последнее, используем несколько серверов на отдачу вместо одного
Демо
http://ussurka.ru/api/user.json http://ussurka.ru/api/user.json?search=@gmail.com http://ussurka.ru/api/user/2.json
Логин: demo
Пароль: demo
Юнит тестирование не писал, к сожалению, небыло времени
统计信息
- 总下载量: 5
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2014-11-18