Фишка в том, что это неочевидный косяк и общий для всех ЦМС и фреймворков. А общий потому, что логика сессий для большинства ПХП программистов — набор правил не подлежащих изменению.
интересно, не программисты ли писали модифицированный механизм работы с сессиями? ;)
молчу, что по-умолчанию, разработчики PHP его написали неоптимальным. :)
На самом деле все происходит так:
1. Если опыта нет — то это делают, как правило, когда упираются в сеть/диск/БД.
2. Если опыт есть — то сразу пишут объекты работы с сессиями (и прочие объекты), чтобы они срабатывали только по необходимости, потому что опытный программер задумывается над тем, что будет происходить с системой в каждой строчке его кода.
PS: возможно для кого-то будет тайной но в некоторых задачах оптимальным является даже кеширование объекта на уровне PHP на момент генерации объекта, в силу того, что он может быть задействован во многих блоках и/или вычислениях. Это и многое другое дает значительный выигрыш производительности системы в целом.
По крайней мере не такие тупые, как в стандартном варианте большинства фреймфорвок где сессия тупо стартует всегда и не понятно что там делает половина бесполезных данных.
>>> if(self::$data !== null && self::$data == $currentData)
Оператор "!==" сравнивает по значению и типу. А на какой тип стоит проверка именно здесь?
И потом, автор проверяет сначала на непустоту self::$data и на равенство некоторой переменной. Ы?
>> А на какой тип стоит проверка именно здесь?
На отсутствие null естественно, ибо (false !==null) != (false !=null)
>> автор проверяет сначала на непустоту self::$data и на равенство некоторой переменной
Естественно, ибо эта переменная в первый раз тоже может содержать null.
>> И потом,
И потом мне кажется, вам просто делать нечего придираясь к таким местам, статья описывают идею, не более.
Может быть дело бы и дошло, но апач сервера их полностью устраивали. Логика была простой, если апач сервера не справлялись с нагрузкой, то в пул добавлялся ещё один веб-сервер, ибо это операция дешёвая.
имхо если была бы нормальная система аутентификации и авторизации, например с применением AOP, то и заплаток что тут описывается не было бы… это не решение всех проблем, но решение многих 8)
В текущей версии сессии для гостей уже вернули назад, поскольку появилось требование поддерживать бесплатный просмотр для гостей лучших событий в матче, а статья описывает события годичной давности, так что просьба не пинать.
>сессии для гостей уже вернули назад
* Наращивание сети до 1Гбит после окончания серии матчей?
* Увеличение времени хранения кеша (как временная мера)
* Использование технологии умных сессий
Ну это не наш, это компании заказчика (а с недавнего времени и бывшего, ибо нашего заказчика купили и всё там реорганизовали). + его структура слишком не идеальна, чтобы им можно было хвастаться.
Но суть такая:
* пачка WMS на базе Windows Server 2003 в 5 континентах. В каждом подразделении своя служба поддержки. Очень часто отваливается видео и звук, поэтому дополнительно наняты девочки, которые проверяют, в том числе визуально, что всё хорошо.
* для WMS написан плагин для авторизации, которому ПХП передаёт различные хеши, а он уже решает пускать пользователя или нет.
* Дополнительно ПХП совершает ряд действий по определению ближайшего дата центра, чтобы пользователям было лучше.
Соответственно сам CDN требует очень больших затрат хотя бы по персоналу.
В бытность, когда мы занимались этим проектом наш заказчик пробовал перейти на Амазон, но получались те же деньги. Потом он нашёл ещё одного вдвое дешевле, перешёл или нет уже не знаю.
Но тем не менее мой ему поклон, ибо на основном сайте в течении нескольких лет можно посмотреть около 250 каналов.
Вы узко мыслите. Во-первых правило компании: на сервер приходится не более 20% загрузки, для подстраховки. А во-вторых расходы на сайт и его сервера были мизерными по сравнению с расходами на CDN.
А раз такая проблема с хранением сессионных данных в мемкеше, то может есть смысл всё в COOKIES писать/читать? Не забываем конечно про дополнительный хеш для их валидации.
А как же система добавления комментариев от незарегистрированных пользователей с использованием капчи? Или просто-напросто форма обратной связи?
Мне кажется, что Ваша мысль имеет смысл, но при этом реализована не совсем универсально (в отличие от использования session_start() в главном файле). Всегда нужно иметь под рукой механизм хранения для любого типа пользователей, а не только для авторизованных.
я к тому что, исходя их исходных данных и при решении проблемы производительности, стоит смотреть в сторону более серьезных оптимизаций. А решение в топике больше похоже на копание с миру по чайной ложке.
я с вами не согласен! это универсальное решение. и оно очень сильно снимает «тупую» нагрузку на сервера. я это применяю повсеместно…
данные подтягиваются из хранилища только в том случае, если они реально понадобились…
все это в PHP реализуюется легко благодаря ООП.
если к объекту сессии пользователя небыло никакого обращения, то они останется неизменным и ни читать ни сохранять ничего не будет.
все это работает и в других местах… надо просто уметь применять.
назовите, на ваш взгляд, более серьезную оптимизацию.
Например если нужно показать все записи с тегом, то нужно писать «memcache», если все записи с тегом «оптимизация» в которых небыло бы тега memcache, то «оптимизация-memcache», если все записи с тегами «memcache», «оптимизация», «сессии», то «memcache+оптимизация+сессии» ну и далее по смыслу.
Умные сессии