Size: a a a

2021 November 14

SP

Sergey Protko in PHP
кто-нибудь знает. гугли user inactivity detection или user idle time. но это не на php делается
источник

D

Dimasik in PHP
супер! пасиба
источник

F

Fedor in PHP
Вечер добрый. Делаю апи на пхп. Нормально ли в каждом запросе создавать подключение к бд или можно как-то сделать одно единственное подключение и его использовать?
источник

МФ

Максим Федоров... in PHP
both
источник

МФ

Максим Федоров... in PHP
одно подключение лучше, но для PHP уже популярное, но не каноничное решение, асинк-фреймворки нужны или схожие модели типа роадраннера
источник

F

Fedor in PHP
А если оставить подключение в каждом запросе ничего страшного не будет?
источник

МФ

Максим Федоров... in PHP
ничего страшного, почти все приложения на пхп живут с этим
если у вас не огромная посещаемость, то норм
источник

F

Fedor in PHP
Ок, спасибо
источник

SP

Sergey Protko in PHP
persistent connection и прочие роад ранеры это сложно, а потому не буду рекомендовать раз такой вопрос поднялся (значит экспертизы работы с такими вещами пока нет).

Базы обычно не любят когда на каждый чих поднимается коннекшен, а потому есть connection poolers. То есть у тебя между php и базой сидит отдельный процесс который может у себя внутри держать пул коннектов к базе и давать приложению возможность поднимать очень легкие коннекты.

Отдельный вопрос это "реюз коннекта к базе" и "реюз tcp/tls соединения".

Примеры: AWS RDS Proxy, pgbouncer, proxysql, pgpool 2. Нужно это тебе или нет - смотри по ходу. их можно подключить как понадобятся. Большинство работают без них и в целом "норм"

а так "умирающая модель" при которой по завершению обработки запроса все умирает это и сильная и слабая сторона. Сильная потому что очень много всего упрощает, слабая потому что это все ж не оч эффективно. хотя опять же, вопрос нефункциональных требований. В 90% ситуаций плюсы сильно перевешивают минусы и еще в 5% есть решения.
источник

F

Fedor in PHP
Спасибо за развернутый ответ. Пока пожалуй выберу самый простой вариант, проект не столь масштабный
источник

W

Wembley in PHP
При каких обстоятельствах подобное решение может понадобиться?
источник

SP

Sergey Protko in PHP
Ну на вскидку:
- срезать пару милисекунд при подключении. Нет смысла если это только <1% от времени обработки запроса. Подключение штука долгая в целом.
- срезать нагрузку на СУБД и лучше использовать кэш. Опять же "по дефолту" ты всеравно профиты от реюза конекшенов не используешь

Словом когда надо как можно меньше латенси и много лёгких операций
источник

SP

Sergey Protko in PHP
Всякие кэши планов запросов СУБД на уровне конекшена хранит но только если ты полноценно юзаешь всякие prepared statements (могу тут врать, но есть много нюансов)
источник

W

Wembley in PHP
Понял, спасибо
источник

AL

As Lan in PHP
привет, можете объяснить на счет Vagrant и Docker, это совсем разные вещи или нет?
источник
2021 November 15

D

Denis in PHP
Да
источник

AL

As Lan in PHP
А для чего если кратко каждая нужна?
я знаю для чего Докер но с вагрантом впервые
источник

SP

Sergey Protko in PHP
вагрант - считай что это менеджер виртуальных окружений. Он помогает автоматизировать вопросы управления виртуалками локальными. Был популярен в "доконтейнерную эру". Можно было скажем взять образ тачки и таким образом внутри команды поддерживать консистентность окружения

сейчас кейсы для вагранта тоже есть но чуть более специфичные (настолько же специфичные как и необходимость иметь свой набор образов виртуалок). в целом и сегодня далеко не все в контейнерах а потому своя аудитория у него еще есть
источник

DE

Dmitry Eliseev in PHP
Telegram
Dmitry Eliseev in PHP
> Правильно ли я понял

Типовые проекты для обычного хостинга с Apache+MySQL без root-доступа удобно делать на типовом OpenServer. Или вместо него вручную локально установить Apache+PHP+MySQL.

А для более сложных проектов полюбили виртуализацию. На продакшене изначально берут виртуалки и ставят и настраивают весь софт сами. И для локальной разработки, чтобы не было проблем совместимости с Windows, удобнее было тоже поднять линуксовую виртуальную машину в VirtualBox и разрабатывать в ней. Но чтобы не ставить в неё весь софт вручную придумали утилиту Vagrant. Она автоматически создаёт виртуальную машину в любой системе виртуализации вроде VirtualBox по готовому конфигу Vagrantfile. Теперь программисту для локальной разработки достаточно сделать git clone проекта и запустить vagrant up. Удобно для локальной разработки, но тяжеловесно для разработки и бесполезно для продакшена.

А потом для продакшена придумали использовать лёгкую контейнеризацию, чтобы деплоить код с софтом прямо в образе-архиве и запускать процесс…
источник

AS

Alexey Samoylov in PHP
Вагрант с плагином hostmanager гораздо удобнее докера
источник