старт сессия что это
Зачем бизнесу стратегические сессии и как их проводить
У владельцев бизнеса должно быть четкое понимание, куда и зачем идти. Стратегические сессии помогают определить вектор движения в долгосрочной и среднесрочной перспективе. По моему опыту, после сессий участники начинают думать вне шаблонов и часто принимают решения за рамками привычных действий.
Я вывела формулу идеального для меня сценария стратегической сессии, которой хочу поделиться. Вы сможете трансформировать ее под свои задачи.
Я люблю цитату: «Когда корабль не знает, к какой пристани держит путь, для него ни один ветер не будет попутным», — на мой взгляд, она максимально точно отражает важность стратегической сессии и для среднего бизнеса, и для крупных игроков рынка.
Чаще всего стратегические сессии решают следующие задачи:
Стратсессия — ежегодное собрание топ-менеджеров. Сейчас обычно проводят две-три встречи в год, поскольку может быть много повесток по разным направлениям.
Что нужно для подготовки
К стратегической сессии нужно готовиться заранее. Изучить рынок и внутренние документы, обсудить ожидания и цели будущей стратсессии, чтобы понять, какой список участников нам потребуется.
Это не всегда только руководители компании и топ-менеджмент. Для работы над видением в крупном бизнесе мы приглашаем акционеров. А вот для обсуждения миссии и ценностей часто собирают еще и ключевых сотрудников и менеджеров среднего звена. Ведь они будут транслировать эти ценности: на внешний рынок и внутри компании — подчиненным.
Следующий шаг — продумать сценарий сессии и инструменты работы, чтобы вовлечь всех участников и получить максимальный результат от стратегической сессии.
Кроме того, надо подумать, как структурировать полученные во время сессии результаты. Это может быть, к примеру, Google-документ или презентация.
Место проведения стратсессии должно быть вырвано из контекста рабочей обстановки — это позволит посмотреть за рамки привычных методов работы.
Сейчас многие компании готовы проводить стратегические сессии онлайн. Это требует дополнительной подготовки и инструментария. Онлайн-формат хорош для малых и средних бизнесов, потому что он дешевле. Следует позаботиться о качестве связи и о том, чтобы всем участникам встречи было комфортно.
Запланировать нужно и постсессионные мероприятия, которые помогут понять, двигаетесь ли вы в выбранном направлении.
Мой опыт работы на стратсессиях
Мы — индустриальная компания с выделенным сбытовым подразделением. Успешно реализовали стратегию интегрированного роста, добавили в портфель новое производственное предприятие.
Основная цель на данный момент — удержать долю домашнего рынка. Мы ее не отдаем, а сохраняем позиции. Глобальная задача: приросты в объемах реализации. У нас есть свободная производственная мощность.
Задача на стратсессию может быть такой — сформулировать стратегическую цель и разработать направления для формирования стратегии развития.
На старте я рассказываю свое видение рынка, даю независимый взгляд — что мне удалось найти в открытых источниках. Дальше я спрашиваю, к чему мы хотим прийти через энное количество лет.
Обязательные пункты в сценарии:
По итогам стратсессии, которую мы проводили, можем прийти к выводу, что технологическую цепочку не будем менять. Считаем, что если и дорабатывать продукт, то в рамках существующего производства.
Как модератору вывести на дискуссию команду? Что конкретно сделать?
Если кратко — через презентации, работу над болевыми точками. У меня есть список вопросов, которые я задаю, когда мы описываем текущее состояние.
Общие — что хорошо, что плохо?
Совет: до стратсессии попросите сотрудников зафиксировать на стикерах или в анонимной Google-форме по пять плюсов и по пять минусов компании. Задача на этом этапе — разговорить людей.
Дальше переходим к пяти главным направлениям — клиенты, продукты, сотрудники, менеджмент, процессы.
В каждом из этих направлений задаем не больше 10 вопросов. Например, по блоку «Клиенты» можно спросить, что прирастает: количество клиентов, средний чек, оборот или прибыль? В блоке «Продукты»: на какой стадии жизненного цикла находятся продукты?
Выбираем вопросы для обсуждения в зависимости от цели стратсессии и задач.
Категоризируем находки, которые мы получили с помощью вопросов, по трем группам:
— количественные показатели;
— качественные показатели;
— организационные показатели.
Инструментарий, который мы будем использовать, зависит от того, с кем работаем. Если это креативные люди (сотрудники рекламных агентств, например), можем обойтись стикерами, ножницами и карандашами. Если крупная корпорация, стоит присмотреться к традиционным форматам, но постараться вывести из шаблонного мышления, за грани привычной парадигмы.
Пять возможных ошибок при проведении стратсессии
«Те, кто не учится на своих ошибках, обречены повторять их», — считал философ Джордж Сантаяна, и я с ним полностью согласна.
1. Не готовиться. Есть стереотип: «Я профессионал, я разберусь на месте». Так не работает. Да, вы, возможно, проведете стратсессию, но результаты будут не столь эффективны, насколько могли бы. Всегда прописывайте сценарий и альтернативные варианты развития событий.
2. Уходить в обтекаемые дискуссии. Начинать обсуждение с самого сложного: с миссии компании, видения. Задача модератора — разогреть команду, подвести к сложному вопросу. Начинайте с простого вопроса, который легко решить, а уже где-то к середине встречи переходите к моментам, которые требуют долгих обсуждений.
3. Слабая цель. Ставьте амбициозные цели и не путайте их с задачами. Пример — сформулируйте цель так: «Войти в топ-3 лидеров рынка», задача при этом — заработать 1 000 000 долларов.
4. Нет ожиданий от стратсессии. Ключевая ошибка — когда не знаешь, чего от тебя ожидают, трудно привести к нужному результату. На входе интервьюируйте основных участников, чего они ожидают от проводимой стратсессии.
5. Не даем высказаться всем. Если мы вовлекаем в дискуссии только топов, то можем получить очень односторонние и однобокие выводы по заданной теме стратсессии и не те результаты, которых ожидали. Спрашивайте всех, кто стоит ниже по иерархии.
И еще одна ошибка, которая касается модераторов, — нельзя отдавать свою роль никому другому. Наша энергия должна уходить ровным счетом на то, чтобы провести сессию от начала до конца и прийти к результату, который мы и собственник бизнеса ожидаем.
Важно:
→ Стратегическая сессия — работающий инструмент для любого бизнеса
Начните с мини-стратсессии по какой-то простой задаче. Посмотрите, как проходит командная работа. Выведите для себя и своей команды алгоритмы, как это работает и к каким результатам вы пришли.
→ Подбирайте команду стратсессии под задачу
Команда может быть не статичной, если сессия разбивается на несколько встреч. Такие гиганты, как Coca-Cola или Mars, на неделю вывозят сотрудников в другие страны и проводят ряд сессий в зависимости от того, какой на сегодня фокус.
→ Привлекайте внешних модераторов, особенно на первых сессиях
Все зависит от компании: в некоторых горизонтальных компаниях, где все в иерархии распределены, стратсессию может проводить кто-то из топов. Если вы считаете, что вам нужен внешний модератор, — это тоже решение.
→ Введите стратсессии как обязательный инструмент
Я знаю компании, которые на первые сессии приглашают модератора. А дальше настолько вовлекаются в эту историю, что назначают ответственного у себя, отправляют на курсы модерации-фасилитации и обходятся своими силами.
Заключение
Крайне рекомендую пользоваться этим инструментом и провести первую стратсессию. При грамотной постановке целей, правильном подборе людей и верно выбранном инструментарии вы сможете выйти за рамки ваших шаблонов, структурируете направления своей деятельности и вовлечете людей для внедрения изменений.
«Стратсессия» — полезный инструмент, а не потраченное время. Что делать, если у вас не так
HR-директор Студии Олега Чулакова
Во многих публикациях нередко мелькает мысль, что любой компании надо проводить стратегические сессии. При этом они часто проходят впустую из-за отсутствия должной подготовки, неправильной организации и непонимания цели мероприятия в целом.
HR-директор Студии Олега Чулакова Анна Ганичева рассказывает обо всех нюансах стратегических сессий и делится опытом недавно проведенного мероприятия.
Что такое стратегическая сессия
Стратегическая сессия — это совещание высшего руководства и ключевых сотрудников, где принимаются важные для компании решения относительно рынков, клиентов, партнеров, направлений развития и бизнес-модели.
Цель стратегической сессии
Тут все индивидуально, у каждой компании она своя. Чаще всего цель — принятие решения о развитии организации. Это и вопросы, связанные с конкретными проблемами, и генерация идей на будущее, и выбор новых направлений развития.
Для своей стратегической сессии мы обозначили следующие цели как приоритетные:
Признаки того, что пора провести сессию
Как правило, встречаются такие факторы:
Кто участвует
Заказчиком всегда выступает собственник компании. Обычно он и определяет состав участников. Важно, чтобы соблюдался принцип охвата всех стратегически важных направлений организации.
Кто, как правило, присутствует на сессии:
В нашем случае участвовали и топ-менеджеры, и middle-менеджмент. Последние постоянно контактируют с линейными специалистами, поэтому могут рассказать о положении дел, а сами мотивированы транслировать стратегические цели подчиненным и способствовать их реализации.
Кто должен вести стратегическую сессию
Для того чтобы сессия прошла эффективно, роль ведущего стоит доверить эксперту-фасилитатору, у которого есть опыт проведения таких мероприятий с компаниями, схожими по масштабу и запросу.
Это представитель третьей стороны, который не предлагает конкретные решения, а помогает участникам сессии выработать их самостоятельно в рамках отведенного времени. Отдать функцию фасилитатора собственнику или кому-то из остальных — идея провальная. Исполнять роль арбитра и при этом полноценно участвовать в обсуждении не получится.
На что мы обращали внимание при просмотре портфолио:
Подготовка к стратегической сессии
Сначала фасилитатор задает вопрос собственнику: «Что вы хотите получить в результате сессии?» В нашем случае озвучили задачу по выработке стратегической цели на три года. Затем выделили три блока:
Всем руководителям предложили проработать их для составления плана реализации стратегии. После этого фасилитатор провела анонимный онлайн-опрос участников предстоящей сессии, чтобы понять видение по поводу:
После этого создали сценарий мероприятия, который финально согласовывался с Олегом.
Организационные вопросы
Чтобы сессия прошла комфортно и продуктивно, мы соблюдали несколько правил:
Что происходит на стратегической сессии
У нас мероприятие стартовало с выступления собственника, где он представил результаты работы компании за последние пять лет, рассказал о причинах проведения сессии и озвучил результаты, к которым необходимо прийти.
Работа поделилась на несколько этапов:
По этим этапам прорабатывались все три блока:
Во время сессии команды перемещались и перемешивались. В итоге мы получили несколько исписанных флипчартов с идеями и проработанными планами их реализации по всем направлениям.
На что обращать внимание во время сессии
Что происходит после сессии
После успешной сессии важно воплотить принятые решения в жизнь. Увы, часто происходит так, что команда снова погружается в операционные задачи, а дела стратегические откладываются на потом.
Мы уже начали реализовывать следующее:
Основные выводы
Что мы отметили для себя по итогам:
Как достичь максимума
Фото на обложке: Shutterstock/Peshkova
Изображения в тексте предоставлены автором
Стратегическая сессия: от А до Я
В статье представлены ключевые моменты, на которые стоит обратить внимание тем, кто планирует проводить стратегическую (или проектную) сессию.
Прежде всего, предлагаю договориться, что мы называем стратегической сессией и определить, для чего она проводится.
Стратегическая сессия — это форма групповой работы, направленная на совместную разработку стратегически-значимых решений организации, с участием ключевых руководителей компании.
Цели стратегических сессий:
· Разработка стратегии компании или значимого проекта.
· Поиск и проработка решения для выхода из трудной ситуации (случившейся или ожидаемой).
· Обеспечение единого видения относительно ситуации, принимаемых решений, планов (случаи, когда стратегическая сессия прежде всего преследует цель командообразования).
· Приращение знаний о каком-либо вопросе или изменение отношения к какой-либо теме (это случаи, когда стратсессия связана с учебными или пропагандистскими целями).
Ниже представлены примеры целей некоторых уже проведенных конкретных стратегических сессий (словами заказчика с небольшой редакцией автора статьи).
Результатами стратсессий обычно являются:
· Проработанные решения и планы.
· Трансляция важной информации или идей (участники «прониклись» идеями).
· Единое видение и командный дух.
· Новые идеи и альтернативные стратегии.
Стратегической сессией, как правило, управляет модератор, используя, соответственно, методы модерации и фасилитации. От профессионализма этого человека зависит то, насколько успешна будет работа всей группы. Так как в стратегических сессиях обычно принимают участие руководители и эксперты, время которых стоит довольно дорого, целесообразно привлекать для роли модератора-фасилитатора профессионала. В противном случае, стратсессия может превратиться в «Съезд народных депутатов», многоголосье, «переливание из пустого в порожнее», не ведущее к единому видению и решению задачи.
Модерация отличается от фасилитации тем, что в ней имеется конкретный четкий алгоритм работы группы. А фасилитация — это скорее набор различных методов групповой работы, скомпонованных по усмотрению ведущего, какого-либо жесткого универсального сценария нет.
Почему важен именно профессиональный модератор, фасилитатор (ведь можно назначить кого-то из своих руководителей или экспертов для координации работы группы)? Приведу основные аргументы:
Вот пример фразы руководителя компании, для которой я проводила стратегическую сессию: «Почему мы сами не можем, работая вместе (на совещаниях, например), достигнуть таких же результатов?! Люди те же, времени столько же, изначальные проблемы и задачи аналогичные, а результат совместной работы совсем другой.»
Чтобы оценить значимость привлечения профессионала, предлагаю посмотреть на примеры целей, приведенные в этой статье выше. Если Вы чувствуете уверенность, что могли бы обеспечить результат по этим целям, например в течение 1 рабочего дня, возможно, экспертный ведущий Вам, правда, не нужен. Но, как правило, чтобы уложиться в ограниченное время и обеспечить результат с требуемым качеством, без соответствующего эксперта не обойтись.
Важные факторы, влияющие на успех стратегической сессии:
Примерные этапы проведения стратегической сессии:
Наиболее распространенные сложности при проведении стратегических сессий:
Все эти сложности профессиональный модератор преодолеет мастерски. Ваши ключевые задачи, как клиента-заказчика, сводятся к тому, чтобы поставить цель для стратегической сессии и собрать людей в назначенное время.
Выбрать модератора или фасилитатора не сложно — смотрите на опыт и инструментарий, которым пользуется эксперт. Профессионалов на рынке не так много, но достаточно, для того, чтобы найти «своего человека».
Несколько советов, как выбрать ведущего стратегической сессии:
Чтобы на этапе выбора модератора-фасилитатора продиагностировать его потенциальную способность быть «серым кардиналом», а не «звездой», обратите внимание, как взаимодействует с вами эксперт на переговорах. Сообщите о любой проблеме, волнующей Вас, и посмотрите реакцию потенциального ведущего. Занимается ли он, в ходе беседы, самопозиционированием (не проявил ли себя как нарцисс? — явление часто встречающееся среди тех, кто выбирает профессию «рулить группами людей»)? Или волшебным образом, незаметно для Вас, этот человек помог продвинуться в понимании и решении проблемы.
Не важно, кого вы привлекаете — крупную компанию-подрядчика или фриланса, который соберет для вас команду ведущих самостоятельно. Смотрите на конкретного человека-исполнителя, а не на брэнд и регалии компании.
Ключевые рекомендации по взаимодействию заказчика и исполнителя (провайдера) при подготовке стратегических сессий:
1. Убедиться, что исполнитель понимает контекст, почему возникла потребность в стратсессии, какие актуальные задачи стоят перед компанией, как задача, проблема стратсессии решалась раньше. Описать профиль участников, их отношение к теме стратсессии, специфику личностную и профессиональную.
2. Согласовать цели и задачи стратсессии.
3. Согласовать логистику стратсессии (регламент работы, кофе-брейки, обеды перемещения, обеспечение материалами — кто, когда, куда, с помощью чего, что делает). Часто на логистические задачи привлекается третья компания, хорошо, если эти два исполнителя будут понимать задачи друг друга, их работа будет согласована между собой.
4. Согласовать требования к помещениям или дать исполнителю детальное описание имеющихся помещений, убедиться, что они подходят. Как бы ни казалось это банальным, иногда помещение может разрушить все планы модератора.
Например, мы планировали дилерскую конференцию с элементами модерации для крупной автомобильной компании. Нам дали информацию о помещениях, на фото были просторные залы, в каждом из которых могли свободно разместиться по 2 группы для работы. Но на месте оказалось, что залы маленькие (раза в 3 меньше, чем мы ожидали), столы двух групп стоят вплотную друг к другу. Пришлось оперативно менять формат работы, объединять группы в одну большую на каждой площадке, менять сценарий, давать новые инструкции всем тренерам.
5. Обеспечить встречу провайдера с внутренним заказчиком (скорее всего это первое лицо) для согласования целей и сценария стратсессии и обеспечения поддержки. Плюс, как правило, полезны встречи с ключевыми руководителями перед стратегической сессией — обсудить цели стратсессии, их видение.
6. Согласовать формат отчетности от провайдера (структура отчета, фото и проч.)
7. Согласовать возможное участие ведущего в дальнейшей работе после проведения стратегической сессии (иногда нужны промежуточные пост-сессии, как в тренинге, и хорошо, если их проводит тот же человек или компания).
8. Обсудить алгоритм сценария стратегической сессии, помочь провайдеру заранее спрогнозировать, какие ответы он скорее всего будет получать на опорные вопросы в текущей формулировке.
9. Обеспечить исполнителю моральную и информационную поддержку. Вы работаете на одну цель. Если выбрали исполнителя, больше не надо его проверять «на слабо», обеспечьте все возможности для его эффективной подготовки.
Возможное пост-сопровождение после стратегической сессии:
Для того, чтобы разобраться с тем, какое сопровождение необходимо после стратегической сессии, давайте разберемся, зачем это сопровождение нужно. Ключевые цели следующие:
Исходя из этих целей можно выбирать подходящий формат пост-сопровождения. На моей практике, системно к этому вопросу подходят лишь немногие клиенты. Но та же беда существует и в отношении программ обучения: слишком часто клиенты все силы направляют на сами тренинги, игнорируя необходимость последующих поддерживающих мероприятий (без которых невозможно достижение цели, ради которой проводились тренинги). Я по этому поводу всегда говорю: «хотите реальных результатов — от 30 до 60% бюджета сразу закладывайте на пост-сопровождение (и в отношении стратсессий и в отношении обучения персонала)». Видимо пока рынок в нашем Отечестве только зреет до глубокого понимания этой идеи…
Итого, по результатам многолетних наблюдений, могу сказать, что даже удачно проведенная стратсессия сама по себе менее эффективна в долгосрочной перспективе, чем более слабая сессия, но, включенная в какую-то целостную систему мероприятий, связанных с развитием компании. Грубо говоря, стратегическая сессия — это не «мимолетное видение», а элемент достижения конкретных целей и задач компании. Она должна происходить не «вдруг» и не «потому, что пришло время ежегодного собрания», а в связи с тем, что назрели значимые вопросы, требующие совместного обсуждения.
Желаю Вам успешных осмысленных стратегических сессий и компетентных провайдеров!
PHP для начинающих. Сессия
Начну с сессий — это один из самых важных компонентов, с которыми вам придется работать. Не понимая принципов его работы — наворотите делов. Так что во избежание проблем я постараюсь рассказать о всех возможных нюансах.
Но для начала, чтобы понять зачем нам сессия, обратимся к истокам — к HTTP протоколу.
HTTP Protocol
Изначально подразумевали, что по этому протоколу будет только HTML передаваться, отсель и название, а сейчас чего только не отправляют и =^.^= и(•_ㅅ_•)
Чтобы не ходить вокруг да около, давайте я вам приведу пример общения по HTTP протоколу.
Вот пример запроса, каким его отправляет ваш браузер, когда вы запрашиваете страницу http://example.com :
А вот пример ответа:
Это очень упрощенные примеры, но и тут можно увидеть из чего состоят HTTP запрос и ответ:
Т.е. если украсть cookie из вашего браузера, то можно будет зайти на вашу страничку в facebook от вашего имени? Не пугайтесь, так сделать нельзя, по крайней мере с facebook, и дальше я вам покажу один из возможных способов защиты от данного вида атаки на ваших пользователей.
Давайте теперь посмотрим как изменятся наши запрос-ответ, будь там авторизация:
Метод у нас изменился на POST, и в теле запроса у нас передаются логин и пароль. Если использовать метод GET, то строка запроса будет содержать логин и пароль, что не очень правильно с идеологической точки зрения, и имеет ряд побочных явлений в виде логирования (например, в том же access.log ) и кеширования паролей в открытом виде.
Как можно заметить, заголовки отправляемые браузером (Request Headers) и сервером (Response Headers) отличаются, хотя есть и общие и для запросов и для ответов (General Headers)
Сервер узнал нашего пользователя по присланным cookie, и дальше предоставит ему доступ к личной информации. Так, ну вроде с сессиями и HTTP разобрались, теперь можно вернутся к PHP и его особенностям.
PHP и сессия
Я надеюсь, у вас уже установлен PHP на компьютере, т.к. дальше я буду приводить примеры, и их надо будет запускать
Вот вам статейка на тему PHP is meant to die, или вот она же на русском языке, но лучше отложите её в закладки «на потом».
Перво-наперво необходимо «стартовать» сессию — для этого воспользуемся функцией session_start(), создайте файл session.start.php со следующим содержимым:
Запустите встроенный в PHP web-server в папке с вашим скриптом:
Запустите браузер, и откройте в нём Developer Tools (или что там у вас), далее перейдите на страницу http://127.0.0.1:8080/session.start.php — вы должны увидеть лишь пустую страницу, но не спешите закрывать — посмотрите на заголовки которые нам прислал сервер:
Там будет много чего, интересует нас только вот эта строчка в ответе сервера (почистите куки, если нет такой строчки, и обновите страницу):
Увидев сие, браузер сохранит у себя куку с именем `PHPSESSID`:
PHPSESSID — имя сессии по умолчанию, регулируется из конфига php.ini директивой session.name, при необходимости имя можно изменить в самом конфигурационном файле или с помощью функции session_name()
И теперь — обновляем страничку, и видим, что браузер отправляет эту куку на сервер, можете попробовать пару раз обновить страницу, результат будет идентичным:
Итого, что мы имеем — теория совпала с практикой, и это просто отлично.
Обновляем страничку и видим время сервера, обновляем ещё раз — и время обновилось. Давайте теперь сделаем так, чтобы установленное время не изменялось при каждом обновлении страницы:
Обновляем — время не меняется, то что нужно. Но при этом мы помним, PHP умирает, значит данную сессию он где-то хранит, и мы найдём это место…
Всё тайное становится явным
В вашей конфигурации путь к файлам может быть не указан, тогда файлы сессии будут хранится во временных файлах вашей системы — вызовите функцию sys_get_temp_dir() и узнайте где это потаённое место.
Так, идём по данному пути и находим ваш файл сессии (у меня это файл sess_dap83arr6r3b56e0q7t5i0qf91 ), откроем его в текстовом редакторе:
Как видим — вот оно наше время, вот в каком хитром формате хранится наша сессия, но мы можем внести правки, поменять время, или можем просто вписать любую строку, почему бы и нет:
Так, что мы ещё не пробовали? Правильно — украсть «печеньки», давайте запустим другой браузер и добавим в него теже самые cookie. Я вам для этого простенький javascript написал, скопируйте его в консоль браузера и запустите, только не забудьте идентификатор сессии поменять на свой:
Вот теперь у вас оба браузера смотрят на одну и туже сессию. Я выше упоминал, что расскажу о способах защиты, рассмотрим самый простой способ — привяжем сессию к браузеру, точнее к тому, как браузер представляется серверу — будем запоминать User-Agent и проверять его каждый раз:
Ключевое слово в предыдущем абзаце похоже, в реальных проектах cookies уже давно «бегают» по HTTPS протоколу, таким образом никто их не сможет украсть без физического доступа к вашему компьютеру или смартфону
Стоит упомянуть директиву session.cookie-httponly, благодаря ей сессионная кука будет недоступна из JavaScript’a. Кроме этого — если заглянуть в мануал функции setcookie(), то можно заметить, что последний параметр так же отвечает за HttpOnly. Помните об этом — эта настройка позволяет достаточно эффективно бороться с XSS атаками в практически всех браузерах.
По шагам
А теперь поясню по шагам алгоритм, как работает сессия в PHP, на примере следующего кода (настройки по умолчанию):
А есть ли жизнь без «печенек»?
PHP может работать с сессией даже если cookie в браузере отключены, но тогда все URL на сайте будут содержать параметр с идентификатором вашей сессии, и да — это ещё настроить надо, но оно вам надо? Мне не приходилось это использовать, но если очень хочется — я просто скажу где копать:
А если надо сессию в базе данных хранить?
Отдельно замечу, что не надо писать собственные обработчики сессий для redis и memcache — когда вы устанавливаете данные расширения, то вместе с ними идут и соответствующие обработчики, так что RTFM наше всё. Ну и да, обработчик нужно указывать до вызова session_start() 😉
Когда умирает сессия?
За время жизни сессии отвечает директива session.gc_maxlifetime. По умолчанию, данная директива равна 1440 секундам (24 минуты), понимать её следует так, что если к сессии не было обращении в течении заданного времени, то сессия будет считаться «протухшей» и будет ждать своей очереди на удаление.
Интересен другой вопрос, можете задать его матёрым разработчикам — когда PHP удаляет файлы просроченных сессий? Ответ есть в официальном руководстве, но не в явном виде — так что запоминайте:
Самая тривиальная ошибка
Ошибка у которой более полумиллиона результатов в выдаче Google:
Cannot send session cookie — headers already sent by
Cannot send session cache limiter — headers already sent
Для получения таковой, создайте файл session.error.php со следующим содержимым:
Во второй строке странная «магия» — это фокус с буфером вывода, я ещё расскажу о нём в одной из следующих статей, пока считайте это лишь строкой длинной в 4096 символов, в данном случае — это всё пробелы
Для проверки полученных знаний, я хочу, чтобы вы реализовали свой собственный механизм сессий и заставили приведенный код работать:
Блокировка
Ещё одна распространённая ошибка у новичков — это попытка прочитать файл сессии пока он заблокирован другим скриптом. Собственно, это не совсем ошибка, это недопонимание принципа блокировки 🙂
Но давайте ещё раз по шагам:
«Воткнутся» в данную ошибку очень легко, создайте два файла:
Есть пару вариантов, как избежать подобного явления — «топорный» и «продуманный».
«Топорный»
Использовать самописный обработчик сессий, в котором «забыть» реализовать блокировку 🙂
Чуть лучше вариант, это взять готовый и отключить блокировку (например у memcached есть такая опция — memcached.sess_locking) O_o
Потратить часы на дебаг кода в поисках редко всплывающей ошибки…
«Продуманный»
Куда как лучше — самому следить за блокировкой сессии, и снимать её, когда она не требуется:
— Если вы уверенны, что вам не потребуется вносить изменения в сессионные данные используйте опцию read_and_close при старте сессии:
Таким образом, блокировка будет снята сразу по прочтению данных сессии.
— Если вам таки нужно вносить изменения в сессию, то после внесения оных закрывайте сессию от записи:
В заключение
В этой статье вам дано семь заданий, при этом они касаются не только работы с сессиями, но так же познакомят вас с MySQL и с функциями работы со строками. Для усвоения этого материала — отдельной статьи не нужно, хватит и мануала по приведенным ссылкам — никто за вас его читать не будет. Дерзайте!