Локировки сессий в веб-проектах — выбираем эффективное оружие
Всем привет! В последнее время, в связи с бурным ростом и усложнением фронт-эндов, аяксами и т.п. — все чаще проявляется проблема локировки сессий во время эксплуатации сайтов на PHP. PHP по умолчанию создает для сессии файл и процесс эксклюзивно его лочит. Остальные процессы, пытающиеся открыть сессию (аяксы, табы в браузере) — выстраиваются в очередь. Не всегда логика приложения, особенно если она сложная, позволяет эффективно ограничить время локировки конкурирующих за сессию процессов. Ситуация усугубляется еще тем, что 3–5 подобных клиентов способны быстро забить зависшими и простаивающими в ожидании процессами PHP-воркеры и сайту становится плохо, если не сказать очень. К сожалению, разработчики/сисадмины не всегда могут сразу понять, что дело в локировке сессии — и ищут проблемы в других частях проекта, теряя время. В статье расскажу какие инструменты позволяют быстро диагностировать проблему, приведу работающий код и дам несколько боевых рекомендаций по выживанию :-)Читать дальше →