Pull to refresh

Comments 70

Исправили косяки программистов, система стала работать лучше – нормально…
Фишка в том, что это неочевидный косяк и общий для всех ЦМС и фреймворков. А общий потому, что логика сессий для большинства ПХП программистов — набор правил не подлежащих изменению.
интересно, не программисты ли писали модифицированный механизм работы с сессиями? ;)
молчу, что по-умолчанию, разработчики PHP его написали неоптимальным. :)

На самом деле все происходит так:
1. Если опыта нет — то это делают, как правило, когда упираются в сеть/диск/БД.
2. Если опыт есть — то сразу пишут объекты работы с сессиями (и прочие объекты), чтобы они срабатывали только по необходимости, потому что опытный программер задумывается над тем, что будет происходить с системой в каждой строчке его кода.

PS: возможно для кого-то будет тайной но в некоторых задачах оптимальным является даже кеширование объекта на уровне PHP на момент генерации объекта, в силу того, что он может быть задействован во многих блоках и/или вычислениях. Это и многое другое дает значительный выигрыш производительности системы в целом.
пардон, опечатался…
«на момент генерации объекта» нужно читать как «на момент генерации страницы»
По крайней мере не такие тупые, как в стандартном варианте большинства фреймфорвок где сессия тупо стартует всегда и не понятно что там делает половина бесполезных данных.
Умные сессии? Скорее, исправление плохого кода ;).
Пардон.

>>> if(self::$data !== null && self::$data == $currentData)
Оператор "!==" сравнивает по значению и типу. А на какой тип стоит проверка именно здесь?
И потом, автор проверяет сначала на непустоту self::$data и на равенство некоторой переменной. Ы?
>> А на какой тип стоит проверка именно здесь?
На отсутствие null естественно, ибо (false !==null) != (false !=null)

>> автор проверяет сначала на непустоту self::$data и на равенство некоторой переменной
Естественно, ибо эта переменная в первый раз тоже может содержать null.

>> И потом,
И потом мне кажется, вам просто делать нечего придираясь к таким местам, статья описывают идею, не более.
Хвастаемся своим участием в большом проекте? :)
Нет, просто небольшая заметка по оптимизации, особенно пригодится параноикам.
У вас нет сисадмина. Был бы — вместо апача давно nginx стоял.
На стороне заказчика — целый отдел. Поскольку они америкосы — nginx они видали в гробу.
они просто тупые, так как nginx обсуждали еще на найскайлабилити блоге и многие используют.
Может быть дело бы и дошло, но апач сервера их полностью устраивали. Логика была простой, если апач сервера не справлялись с нагрузкой, то в пул добавлялся ещё один веб-сервер, ибо это операция дешёвая.
>ибо это операция дешёвая.
деньги есть — ума ненадо…
Мне как-то сказали — «nice, but give me docs!»
Надо бы собраться и сделать уже Сысоеву в подарок мультиязычный красивый сайт для nginx!
Лучше пусть пиндосы учат русский.
Эх, если бы настоящие проблемы решались расстановкой двух ифов…
имхо если была бы нормальная система аутентификации и авторизации, например с применением AOP, то и заплаток что тут описывается не было бы… это не решение всех проблем, но решение многих 8)
просроченную куку бровзер не посылает
просроченная не для браузера а для приложения
Значит надо сделать что бы они одновременно просрачивались :)
просрачить
срачить
отсрачить
пересрачить
досрачить
недосрачить
перенедопросрачить

отличное слово, осталось придумать его значение :)
Ага. Есть же красивое и понятное русское слово «заэкспайрилась»
а есть еще более симпатичное — «истек строк»
UFO just landed and posted this here
UFO just landed and posted this here
>То есть СЕО поработал хорошо, а нам разгребай.
у вас что, за поисковые оптимизации отвечает ген. директор? :)
чтобы не переключать раскладку SEO часто СЕО называют, так как в рунете СЕО, тот который большой дирехтор, не используется.
Раз 150 тысяч, то можно уж комментарием. Думаю многим будет интересно.
Можно: qualifiers.jumptv.com/

В текущей версии сессии для гостей уже вернули назад, поскольку появилось требование поддерживать бесплатный просмотр для гостей лучших событий в матче, а статья описывает события годичной давности, так что просьба не пинать.
щас по нему хабрапрофилировщик пройдется )
Лохотрон какой-то. Выбрал матч Chile — Bolivia, посмотрел рекламу, потом на сообщение «Video not available», и опять рекламу. Отличный сервис!
Сейчас там китайцы всем заправляют (купили компанию и поменяли нас на свой офшор), так что что у них происходит — неясно.
>сессии для гостей уже вернули назад
* Наращивание сети до 1Гбит после окончания серии матчей?
* Увеличение времени хранения кеша (как временная мера)
* Использование технологии умных сессий
йо майо strike не сработал!
Ну вообще логично не открывать сессию там, где она не нужна (как не удивительно).
UFO just landed and posted this here
«В месте, где выводится форма логина добавляем старт сессии, ибо здесь уже надо» — всегда думал, что сессию нужно открывать ПОСЛЕ успешного логина.)
Скоро на Хабре будут статьи вида «Как запустить сессию?», с текстом — «Используйте session_start()».
Это типа плохо, да? Все из известного места профи выходят?
UFO just landed and posted this here
Про CDN Ваш могли бы рассказать, было бы интересно.
Ну это не наш, это компании заказчика (а с недавнего времени и бывшего, ибо нашего заказчика купили и всё там реорганизовали). + его структура слишком не идеальна, чтобы им можно было хвастаться.

Но суть такая:
* пачка WMS на базе Windows Server 2003 в 5 континентах. В каждом подразделении своя служба поддержки. Очень часто отваливается видео и звук, поэтому дополнительно наняты девочки, которые проверяют, в том числе визуально, что всё хорошо.
* для WMS написан плагин для авторизации, которому ПХП передаёт различные хеши, а он уже решает пускать пользователя или нет.
* Дополнительно ПХП совершает ряд действий по определению ближайшего дата центра, чтобы пользователям было лучше.

Соответственно сам CDN требует очень больших затрат хотя бы по персоналу.

В бытность, когда мы занимались этим проектом наш заказчик пробовал перейти на Амазон, но получались те же деньги. Потом он нашёл ещё одного вдвое дешевле, перешёл или нет уже не знаю.

Но тем не менее мой ему поклон, ибо на основном сайте в течении нескольких лет можно посмотреть около 250 каналов.
5 серваков, аппаратный балансировщик и всего 150 000 посетителей. Нас бы уволили за такое.
согласен.
у нас nginx, за ним 5 php бэкендов, один мемкеш, 1 mysql + 1 slave
и все это вытягивает 10M страниц в день (примерно 1M посетителей)

и страница раз в 10 тяжелее по структуре чем в представленном сайте…
Вы узко мыслите. Во-первых правило компании: на сервер приходится не более 20% загрузки, для подстраховки. А во-вторых расходы на сайт и его сервера были мизерными по сравнению с расходами на CDN.
UFO just landed and posted this here
Расскажите лучше какую и как используете CDN?
А раз такая проблема с хранением сессионных данных в мемкеше, то может есть смысл всё в COOKIES писать/читать? Не забываем конечно про дополнительный хеш для их валидации.
Не, это жепь. К тому же при переходе на 1Гбит, проблема отпала.
А как же система добавления комментариев от незарегистрированных пользователей с использованием капчи? Или просто-напросто форма обратной связи?

Мне кажется, что Ваша мысль имеет смысл, но при этом реализована не совсем универсально (в отличие от использования session_start() в главном файле). Всегда нужно иметь под рукой механизм хранения для любого типа пользователей, а не только для авторизованных.
Да, только какое это отношение имеет к топику?
я к тому что, исходя их исходных данных и при решении проблемы производительности, стоит смотреть в сторону более серьезных оптимизаций. А решение в топике больше похоже на копание с миру по чайной ложке.
я с вами не согласен! это универсальное решение. и оно очень сильно снимает «тупую» нагрузку на сервера. я это применяю повсеместно…
данные подтягиваются из хранилища только в том случае, если они реально понадобились…
все это в PHP реализуюется легко благодаря ООП.
если к объекту сессии пользователя небыло никакого обращения, то они останется неизменным и ни читать ни сохранять ничего не будет.
все это работает и в других местах… надо просто уметь применять.

назовите, на ваш взгляд, более серьезную оптимизацию.
Мультикаст снимает нагрузку с CDN, которая не имеет практически никакого отношения к рассматриваемой инфраструктуре, кроме того, что юзает общую базу.

Кроме того вы мультикаст юзали? Вы знаете что там дохрена подводных камней?
Это легко реализовать.

Например если нужно показать все записи с тегом, то нужно писать «memcache», если все записи с тегом «оптимизация» в которых небыло бы тега memcache, то «оптимизация-memcache», если все записи с тегами «memcache», «оптимизация», «сессии», то «memcache+оптимизация+сессии» ну и далее по смыслу.
Sign up to leave a comment.

Articles

Change theme settings