Представляем вам Imhotep — PHP-фреймворк с открытым исходным кодом.
Его архитектура и инструментарий напоминают популярные фреймворки, но есть и существенные отличия, которые, по нашему мнению, являются ключевыми в разработке и поддержке Imhotep. Давайте ознакомимся с ними.
Минимальная зависимость
Мы стремимся к минимальной зависимости от сторонних PHP-пакетов, что дает ряд преимуществ:
Значительно уменьшает размер приложения, исключая загрузку ненужных данных;
Снижает вероятность возникновения уязвимостей, связанных с внешними зависимостями.
После установки размер Imhotep составляет всего ~5 мегабайт.
Легкая установка
Для работы приложения Imhotep необходим PHP версии не ниже 8.2. На ваш выбор предлагается два варианта установки Imhotep:
Первый способ: через Composercomposer 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.
Источник: habr.com