Представляем вам Imhotep — PHP-фреймворк с открытым исходным кодом.
Его архитектура и инструментарий напоминают популярные фреймворки, но есть и существенные отличия, которые, по нашему мнению, являются ключевыми в разработке и поддержке Imhotep. Давайте ознакомимся с ними.
Минимальная зависимость
Мы стремимся к минимальной зависимости от сторонних PHP-пакетов, что дает ряд преимуществ:
-
Значительно уменьшает размер приложения, исключая загрузку ненужных данных;
-
Снижает вероятность возникновения уязвимостей, связанных с внешними зависимостями.
После установки размер Imhotep составляет всего ~5 мегабайт.
Легкая установка
Для работы приложения Imhotep необходим PHP версии не ниже 8.2. На ваш выбор предлагается два варианта установки Imhotep:
Первый способ: через Composer
composer create-project imhotep/imhotep example-app cd example-app cp .env.example .env && ./imhotep key:gen php server
Второй способ: с помощью Docker на основе Alpine образов
curl -s "https://install.imhotep.dev/example-app" | bash cd example-app ./vendor/bin/docker up
Более подробную информация о установке и конфигурировании приложения можно прочитать в документации на официальном сайте.
Быстродействие и оптимизация
Благодаря тщательной оптимизации внутреннего кода и снижению оверхеда, мы добились следующих результатов в ходе тестирования с использованием Apache Benchmark (10 concurrency, 1000 requests, Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.8 GHZ, 1 GB ОЗУ, SSD) c пустым контроллером:
Количество ядер |
1 ядро |
4 ядра |
8 ядер |
---|---|---|---|
Общее время теста |
3.603 s. |
1.226 s. |
0.931 s. |
Запросов в секунду |
277 |
815 |
1074 |
Время одного запроса |
0.0036 s. |
0.0012 s. |
0.0009 s. |
Как видно из представленной выше таблицы, даже на самом слабом сервере, базовые функции Imhotep не окажет существенного влияния на скорость загрузки приложения.
Возможности
На сегодняшний момент Imhotep поддерживает:
-
Кеширование: array, file, redis (скоро memcached, database)
-
Базы данных: sqlite, mysql, postgres
-
Файловую систему: local, S3
-
Локализацию приложения
-
Уведомления: SMTP, Telegram, SMS
-
Сессии: array, file (скоро redis, memcached, database)
-
Валидацию входных данных
-
Шаблонизатор
И много других возможностей, которые можно изучить в документации.
Документация
Мы уделяем особое внимание созданию подробной и структурированной документации, которая позволяет быстро перейти от ознакомления к использованию фреймворка.
Импортозамещение
В условиях современных мировых реалий Imhotep может стать хорошим решением для импортозамещения. Мы стараемся создать инструмент, который будет полезен для всех желающих использовать качественные и надежные решения в своих проектах.
Переход на Imhotep
Imhotep сочетает в себе все ключевые достоинства современных фреймворков, при этом сохраняет привычный стиль разработки. Это позволяет легко и быстро приступить к созданию приложений или перенести свой код с других фреймворков на Imhotep с минимальными изменениями.
Пример приложения
Чтобы продемонстрировать возможности фреймворка, был создан простой блог. В нём пользователи могут добавлять, редактировать и удалять статьи, а также автоматически регистрироваться, не требуя подтверждения при входе.
Приложение доступно по адресу example-blog.imhotep.dev. Исходный код можно изучить на Github.
Заключение
Мы проделали большую работу по созданию Imhotep и оптимизации внутреннего кода, но чтобы достичь идеала, нам нужна ваша помощь и поддержка. Если у вас есть идеи по улучшению функционала, вы готовы потратить время на разработку новых функций или устранение недостатков, мы будем рады видеть вас в нашем сообществе на GitHub.
ссылка на оригинал статьи https://habr.com/ru/articles/861314/
Добавить комментарий