PHPackages                             quberik/application-for-domotehnika - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. quberik/application-for-domotehnika

ActiveProject[Utility &amp; Helpers](/categories/utility)

quberik/application-for-domotehnika
===================================

Test application for Domotehnika company

1.0.x-dev(11y ago)05MITPHPPHP &gt;=5.3.3

Since Nov 15Pushed 11y ago1 watchersCompare

[ Source](https://github.com/Quberik/ApplicationForDomotehnika)[ Packagist](https://packagist.org/packages/quberik/application-for-domotehnika)[ RSS](/packages/quberik-application-for-domotehnika/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependencies (17)Versions (3)Used By (0)

Readme
======

[](#readme)

Реализовано приложение — API для доступа к пользовательским данным через веб. Данные пользователей хранятся в БД. У каждого пользователя есть nick, login и email. Выбор типа возвращаемых данных (json или xml, по выбору клиентского приложения).

Установка приложения
--------------------

[](#установка-приложения)

Качаем и устанавливаем [Composer](https://getcomposer.org/download/)
Закачиваем приложение через 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](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-service.html) локально. Порт `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
```

Опционально
-----------

[](#опционально)

1. Переключение окружения (development, production):
    `http://your-site.ru/` - prod
    `http://your-site.ru/app_dev.php/` - dev
2. > Кастомные страницы 404й и 500й ошибок - не совсем понял, что тут имелось ввиду. Сейчас, если клиент делает запрос на сервер и ожидает json, то приходит json ответ с 404 или 500 ошибкой. Если клиент запрашивает xml, то ответ с ошибкой приходит также, только в формате xml.
3. Доступ к API осуществляется только авторизованному клиентскому приложению. Логин и пароль: `demo` и `demo`

Дополнительное задание
----------------------

[](#дополнительное-задание)

#### Окружение для посещаемости 5 млн

[](#окружение-для-посещаемости-5-млн)

1. Linux CentOs, version &gt; 6
2. PHP 5.3.3 или выше
3. MySql 5.5.33 или выше
4. Nginx 1.5.3
5. Отключаем Access log `access_log off;` в файле nginx.conf
6. Устанавливаем внутренний кеш PHP - APC
7. Так как mysql движок будет использоваться innodb, то устанавливаем размер буфера до 75% (`innodb_buffer_pool_size`) от всей доступной памяти на сервере (`key_buffer` соответственно уменьшаем) в файле my.cnf.
8. `innodb_flush_log_at_trx_commit` в этом же файле устанавливаем значение в 0. Значительно повыситься скорость записи при больших объёмах (не нужно буфер записи скидывать на диск после каждой операции).
9. Включаем внутренний кеш MySQL: `query_cache_size = 32М`
10. Выставляем количество воркеров для Nginx равное количеству ядер
11. Переносим сервер ElasticSearch на отдельный сервер или несколько серверов
12. Переносим MySQL базу на другой сервер. Можно настроить MySQL репликацию на несколько серверов.
13. Включаем кеш Doctrine, файловый кеш
14. Вертикальное и горизонтальное масштабирование
15. С помощью zabbix следим за нагрузкой и работой узлов системы
16. Ну и последнее, используем несколько серверов на отдачу вместо одного

Демо
----

[](#демо)

```
http://ussurka.ru/api/user.json
http://ussurka.ru/api/user.json?search=@gmail.com
http://ussurka.ru/api/user/2.json
```

Логин: `demo`
Пароль: `demo`

###### Юнит тестирование не писал, к сожалению, небыло времени

[](#юнит-тестирование-не-писал-к-сожалению-небыло-времени)

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

4242d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/0953018e9441b3d42b35db473094128364de6e3ffa35281f15df1b9cafcad99b?d=identicon)[Quberik](/maintainers/Quberik)

---

Top Contributors

[![quberok](https://avatars.githubusercontent.com/u/3033524?v=4)](https://github.com/quberok "quberok (33 commits)")

### Embed Badge

![Health badge](/badges/quberik-application-for-domotehnika/health.svg)

```
[![Health](https://phpackages.com/badges/quberik-application-for-domotehnika/health.svg)](https://phpackages.com/packages/quberik-application-for-domotehnika)
```

###  Alternatives

[kimai/kimai

Kimai - Time Tracking

4.7k8.7k1](/packages/kimai-kimai)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M196](/packages/sulu-sulu)[rcsofttech/audit-trail-bundle

Enterprise-grade, high-performance Symfony audit trail bundle. Automatically track Doctrine entity changes with split-phase architecture, multiple transports (HTTP, Queue, Doctrine), and sensitive data masking.

1155.2k](/packages/rcsofttech-audit-trail-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
