Comments 130
UFO just landed and posted this here
Готов ли движок к высоким нагрузкам?
Как кешируем?
Сколько запросов к MySQL при открытии главной?
Как кешируем?
Сколько запросов к MySQL при открытии главной?
а вот посоветуйте, чем лучше кешировать?
По кешированию — в тестах с лайвстритом мемкеш давал примерно 20-30% прироста скорости.
Не сочтите зарекламу, но советую взять нормальный ВПС как минимум, у меня щас проекты на фаствпс, всё летает. Там хоть можно настроить систему под себя, LAMP там, все дела :) Сами видите, что сейчас у Вас 503 без намека на восстановление. Если бы хотя бы nginx стоял…
Хочу добавить, что просто необходимо провести клиентскую оптимизацию: 10 файлов css, еще больше js — такое допустимо только в дефолтном шаблоне для простоты редактирования, на боевом проекте так нельзя.
Не сочтите зарекламу, но советую взять нормальный ВПС как минимум, у меня щас проекты на фаствпс, всё летает. Там хоть можно настроить систему под себя, LAMP там, все дела :) Сами видите, что сейчас у Вас 503 без намека на восстановление. Если бы хотя бы nginx стоял…
Хочу добавить, что просто необходимо провести клиентскую оптимизацию: 10 файлов css, еще больше js — такое допустимо только в дефолтном шаблоне для простоты редактирования, на боевом проекте так нельзя.
UFO just landed and posted this here
UFO just landed and posted this here
Я конечно рад за хабру (хотя инногда мы и наблюдаем фразу «Мы скоренько»), но я не считаю его идеалом. Сейчас я в глубинке, и интернет у меня ооочень хиленький — загрузка страничек хабры оставляет желать лучшего в сравнении с некоторыми другими сайтами.
ну, прикрутят к очередному блогу Web Optimizer и забудут о клиентской оптимизации. Зачем каждый раз все руками делать?
Безусловно.
случайно ентер нажался…
чем лучше кешировать? мемкеш на хостинге не досупен пользуюсь файловым, может есть чего получше?
чем лучше кешировать? мемкеш на хостинге не досупен пользуюсь файловым, может есть чего получше?
Переходите ко мне на VDS, за месяц сделаем нормальное кеширование и оптимизацию
Будет хоть одна CMS заточенная под хайлоад :)
Будет хоть одна CMS заточенная под хайлоад :)
Мне кажется что при создании движка такого типа это один из главных вопросов, который должен возникнуть.
да что-тако, кто на энтер отправку поставил!!??!?!?
Используется файловое кеширование. Но есть возможность кеширования в мемкеше. SQL запросов на главной 5 при включенном кеше, как сейчас.
Вообще движок оптимизировался, но понятно что обычный хостинг хаброэфект мог выдержать только по счастилвой случайности :) В принципе на данный момент проект работает, хоть и со скрипом.
Вообще движок оптимизировался, но понятно что обычный хостинг хаброэфект мог выдержать только по счастилвой случайности :) В принципе на данный момент проект работает, хоть и со скрипом.
вот вас послушаешь — и кажется что у каждого из посетителей хабра или гугл или фейсбук по нагрузкам.
огласите, пожалуйста, статистику по своему самому нагруженному проекту?
огласите, пожалуйста, статистику по своему самому нагруженному проекту?
«Service Temporarily Unavailable» вот и всё =)
Картинки перезалейте :(
хабраэффект :)
Красиво излагаете — захотелось потрогать сей продукт :)
По окончании хабраэффекта будем-с изучать.
По окончании хабраэффекта будем-с изучать.
Движок говно.
Отличный движок.
Я вас не понял =) У вас раздвоение личности? о_О
я думал кто-то вспомнит habrahabr.ru/blogs/humour/74111/
Вы решили устроить таким образом голосование?
Что я увидел? — «Service Temporarily Unavailable».
А полезного? — Ничего.
А полезного? — Ничего.
Вы бы написали, что движок на php — а то не понятно сразу=\
Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
ето типа убиваем конкурентов в зародке?
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
ето типа убиваем конкурентов в зародке?
Я смог зайти
сколько ж можно плодить многострадальный хабр? неужели сила мысли не летит дальше этой блог-системы?
нарекая своё детище «клон хабры» вы обрекаете её на неминуемую смерть, ибо клонов никто не любит.
нарекая своё детище «клон хабры» вы обрекаете её на неминуемую смерть, ибо клонов никто не любит.
и да, «не» ничего не решает :)
Автор, по-моему, не раз упомянул, что не пытался делать клон хабра. Что движок является самостоятельным продуктом. Или слова автора уже ничего не значат?
Автор движка — молодец. Делает все под себя, гибко. Еще бы немсубурно излагал мысли, но если продолжит писать про движок, то, думаю, и это у него получится.
Автор движка — молодец. Делает все под себя, гибко. Еще бы немсубурно излагал мысли, но если продолжит писать про движок, то, думаю, и это у него получится.
«Зарядка: Ох. медленно»
ржал))
ржал))
>Итак, движок основан на собственном MVC Framevork называемом Envos.
Framework
было бы неплохо описать требования к данному движку. Судя по всему, это LAMP, но требования по модулям, например, не помешали бы.
вводить кеширование необходимо, иначе любой хостер тут же отключит сайт при первом же нашествии поисковых ботов. лучше всего вводить кеширование на основе файлов, т.к. мемкеш вряд ли будет установлен на шаред-хостинге. ввести хотя бы данный метод (2 ссылка в гугле по фразе «php кеширование»):
php.russofile.ru/ru/translate/unsort/caching_5_steps/
Framework
было бы неплохо описать требования к данному движку. Судя по всему, это LAMP, но требования по модулям, например, не помешали бы.
вводить кеширование необходимо, иначе любой хостер тут же отключит сайт при первом же нашествии поисковых ботов. лучше всего вводить кеширование на основе файлов, т.к. мемкеш вряд ли будет установлен на шаред-хостинге. ввести хотя бы данный метод (2 ссылка в гугле по фразе «php кеширование»):
php.russofile.ru/ru/translate/unsort/caching_5_steps/
Могу подсказать шаред хостинг с memcache :)
Как раз и используется файловое кеширование. Но есть вомзожность и memchache
В отличии от приведенного выше пример, кешируется у меня не HTML код а данные. Так как вся работа с БД происходит через отдельный слой модели, на этом уровне и происходит кеширование, а в файлах кеша хранятся сериализованные массивы. Во вторых у меня нет времени жизни кеша (не работает пока :)). Кеш живет столько cколько нужно, до тех пор пока данные в БД не изменятся. При этом, сам кеш хрвнится в виде дерева, и при устаревании одного узла, из кеша удаляются и те что ниже. Это похоже на файловую систему. Я об этом писал вот тут, правда там для memcache, но я реализовал то же самое и для файлов. Вообще кеширование выполнено на основе паттерна «Стратегия», и модели пофигу где кешировать, главное подсунуть ей нужную стратегию. А там хоть в параллельном пространстве кешируй :)
а вот это уже интересно, автор пишет код хорошо, я некогда в его фреймворке копался. кустомизация обещает быть легкой и быстрой.
Сайт лёг :)
От хабра-эффекта никто не застрахован (С)
От хабра-эффекта никто не застрахован (С)
Как это никто? Сколько уже статей по защите от подобных эффектов было :)
Подсказываю идею для стартапа — страхование от хабраэффекта
govnokod.ru, тот же, хабраэффект вполне выдержал. вообще безо всяких подготовок к нему и кеширования
Хе-хе :) tracert govnokod.ru
в итоге попадаем на keyweb.de
Выясняем что они занимаются минимум VDS.
Признаемся, какие ресурсы у говнокода? ;)
envos.org упал только потому что уперся в лимиты хостинга. Обычного хостинга а не VDS и тем более не выделенного сервера :)
в итоге попадаем на keyweb.de
Выясняем что они занимаются минимум VDS.
Признаемся, какие ресурсы у говнокода? ;)
envos.org упал только потому что уперся в лимиты хостинга. Обычного хостинга а не VDS и тем более не выделенного сервера :)
шансы уравниваются тем, что никаких оптимизаций не проводилось. код написан так как удобнее, а не как быстрее. безо всяких 100 слоёв кеширования и прочих свистулек.
Я тоже пишу код как удобнее. Преждевременная оптимизация — зло ©
Но шансы так не уравниваются, так как между тем VDS что предлагают поминимуму на keyweb и обычным хостингом просто пропасть.
И нет никаких 100 слоев кеширования, есть только файловый кеш данных. Причем похоже он не помог а наоборот усложнил дело, видимо израсходовал лимит файловых дескрипторов, так как это обычный хостинг и там лимиты маленькие.
Но шансы так не уравниваются, так как между тем VDS что предлагают поминимуму на keyweb и обычным хостингом просто пропасть.
И нет никаких 100 слоев кеширования, есть только файловый кеш данных. Причем похоже он не помог а наоборот усложнил дело, видимо израсходовал лимит файловых дескрипторов, так как это обычный хостинг и там лимиты маленькие.
а есть какая-то статистика нагрузки? на ГК, насколько я помню (проект не мой), в пике было около 1200http запросов/сек
Нет, подробной статистики нет. Только аналитикс, который так подробно статистику не показывает. Знаю только что в пике было 1200 хитов в час. Но в это время большую часть времени сервер лежал, и аналитикс понятно дело учел далеко не все хиты. Но повторяю, нельзя сравнивать VDS с 10-ю сайтами на сервере и полгигом оперативы и хостинг с тучей лимитов и кучей сайтов на одном серваке. Это просто несравнимо.
Да и вообще, как можно сравнивать два проекта. У ГК на главной 2 простейших SQL запроса. На остальных еще меньше. По сложности проекты просто несравнимы. Как несравнимы ресурсы серверов.
откуда дровишки про 2 запроса?
1 запрос выбирает категории (С++, PHP… ) 2-й запрос выбирает говнокод текущей категории. Для чего там больше?
ахаха, ну да ну да…
это в случае, если бы там была написана лапша from scratch
а тем не менее оно работает на довольно сложном и гибком каркасе, у которого ещё и свои потребности в запросах есть.
это в случае, если бы там была написана лапша from scratch
а тем не менее оно работает на довольно сложном и гибком каркасе, у которого ещё и свои потребности в запросах есть.
ну и навскидку: число страниц, конечно же, возьмётся из воздуха. текущий юзер — оттуда же. а ещё из воздуха возьмётся число комментариев которые ты ещё не прочитал в каждом из кодов.
вот так вот навскидку ещё 3 запроса.
вот так вот навскидку ещё 3 запроса.
число страниц это count(). Он считается мгновенно по индексу, при количестве записей меньше миллиона, этот запрос можно не учитывать. Текущий пользователь берется из сессии. Никаких запросов там не нужно. Тем более что большинство пользователей вообще неавторизованы. Количество комментариев считается тем же запросом что и выбирается говнокод. Если руки прямые. конечно.
нельзя не учитывать — ты первым начал считать запросы. это запрос? запрос. так что +1
текущий юзер — это такой же объект. в сессии хранится uid, по нему выгребается юзер.
про количество комментариев — перечитай мой коммент. там показываются комментарии в общем и которые не прочитал конкретно ты.
так что +3 запроса.
текущий юзер — это такой же объект. в сессии хранится uid, по нему выгребается юзер.
про количество комментариев — перечитай мой коммент. там показываются комментарии в общем и которые не прочитал конкретно ты.
так что +3 запроса.
все данные по пользователю у меня хранятся в сессии. Никаких запросов не выполняется. Прочитанные и общие комментарии вычисляются одним запросом. Посторяю, каунт не считаются на сайте меньше тысячи записей. Это что слону дробина. На остальных страницах запросов еще меньше. При этом самих страниц меньше. Короче ты бы еще html страничкой на выделенном сервере померялся)))
напиши-ка запрос на выборку прочитанных и общих комментов в одном запросе, покажи EXPLAIN и расскажи о плане выполнения? :-)
причем тут план выполнения? У меня тоже есть сложные запросы. Блин я не понимаю чем мы меряемся. Сайт с 5-ю страницами и проект мультиблогов, да еще и с гостевой, фотогалерей и другим. Да у меня только одна страница собирается из десятка шаблонов. А это файловые операции. Блин это все равно что достоинство комара сравнивать с достоинством слона. :)) Несерьезно, ей богу.
тебе ли не знать, что в любом «универсальном фреймворке» будет ещё тонна всяких служебных и нужных запросов.
Кстати, спасибо за наводку на keyweb
Порадовали их тарифы, может быть воспользуюсь
Порадовали их тарифы, может быть воспользуюсь
UFO just landed and posted this here
Может не очень весомое замечание, но всё же мне кажется особый стиль для :hover у ссылок не помешает.
Вот бы ещё кто на rails сделал бы толковое двигло…
radiant наше все :)
Вот как раз сейчас этим занимаюсь. github.com/igor-alexandrov/rblog. Но нормальный, рабочий вариант я думаю, будет месяца через 2.
>>Есть в движке и ЧПУ, реализованное по типу того что есть в…
10 раз перечитал пока не полез на Википедию…
10 раз перечитал пока не полез на Википедию…
Интересно, прикрутят потом кросспостинг в ЖЖ?
Право, очень не помешала бы функция. Указываешь в профиле юзера данные ЖЖшечки, и при отправке записи в блог указываешь галочкой — кросспостинг
Не берусь говорить, что это всеобщеполезная функция, но вот мне, к примеру, такая штукенция не помешала бы.
Право, очень не помешала бы функция. Указываешь в профиле юзера данные ЖЖшечки, и при отправке записи в блог указываешь галочкой — кросспостинг
Не берусь говорить, что это всеобщеполезная функция, но вот мне, к примеру, такая штукенция не помешала бы.
если автор движка реализует работу через xml-rpc, то технически сложностей нет сделать такой функционал.
Если бы я был заядлым ЖЖистом то наверное уже сделал бы :) И еще в твитер. Вообщем спасибо за идею. Кстати, если проект будет развиваться, у меня есть мысли по еще более глобальной интеграции его в блогосферу. Но всему свое время ;)
Обращайтесь, если понадобятся какие-то идеи
У меня приятель сделал сайт, а в нем блог. И тоже реализовал позднее идею кросспостинга на основе соответствующего плагина для вордпресса
mywordpress.ru/plugins/ljxp/
После этого прибавилось и юзеров, и, собственно, сообщений на душу населения.
У меня приятель сделал сайт, а в нем блог. И тоже реализовал позднее идею кросспостинга на основе соответствующего плагина для вордпресса
mywordpress.ru/plugins/ljxp/
После этого прибавилось и юзеров, и, собственно, сообщений на душу населения.
Пока не буду трогать движок, а вот сам фреймворк поковыряю, спасибо.
ЗЫ. Метод self() в статическом классе Envos порадовал :) Так и представил себе где-нить в его внутренностях вызов типа self::self()…
ЗЫ. Метод self() в статическом классе Envos порадовал :) Так и представил себе где-нить в его внутренностях вызов типа self::self()…
Ну движок является неплохой документацией к фрейморку ;)
А почему не ucfirst()?.
И, насколько я понял, интернационализацию (i18n) Вы не предусматривали?
И, насколько я понял, интернационализацию (i18n) Вы не предусматривали?
Не знал про такую функию. Спасибо :)
Интернационализация предусмотрена, в том смысле что используется Utf-8, но я не рассчитывал что имена классов будут на русском, а эти методы и используются в дебрях движка для преобразования именно имен классов. Но спасибо за подсказку, исправим :)
Интернационализация предусмотрена, в том смысле что используется Utf-8, но я не рассчитывал что имена классов будут на русском, а эти методы и используются в дебрях движка для преобразования именно имен классов. Но спасибо за подсказку, исправим :)
Я имел в виду возможность автоматического перевода «служебных» текстов на указанный в настройках язык. Собственно вопрос возник при прочтении того же класса Utils — там Вы используете строки 'Мб', 'Кб' и т.д., т.е. иностранцы никакого перевода не получат.
Кстати, а в чем смысл переводить в нижний регистр только первую букву? Почему не strtolower()?
Кстати, а в чем смысл переводить в нижний регистр только первую букву? Почему не strtolower()?
В будующем все эти тексты вынесутся в языковые файлы. Не стал делать это в первой же версии.
>Кстати, а в чем смысл переводить в нижний регистр только первую букву?
Смысл в том что имя класса экшена состоит из двух частей — имя модуля и имя экшена. Если для страницы явно не задано правило роутинга, то используется правило по умолчанию, то есть адрес страницы выглядит как /модуль/экнш/
Для красоты если имя класа экшена например UserProfile то адрес страницы будет /user/profile/ то есть первые буквы приведутся к нижнему регистру. Но потом по ним надо снова получить имя класса. В данном случае легко. Но что если имя класса UserCommentDel? Тогда сделав strtolower я не смогу получить исходное имя класса обратно, потому что не знаю какая буква была в середине слова в верхнем регистре.
Как то так :)
>Кстати, а в чем смысл переводить в нижний регистр только первую букву?
Смысл в том что имя класса экшена состоит из двух частей — имя модуля и имя экшена. Если для страницы явно не задано правило роутинга, то используется правило по умолчанию, то есть адрес страницы выглядит как /модуль/экнш/
Для красоты если имя класа экшена например UserProfile то адрес страницы будет /user/profile/ то есть первые буквы приведутся к нижнему регистру. Но потом по ним надо снова получить имя класса. В данном случае легко. Но что если имя класса UserCommentDel? Тогда сделав strtolower я не смогу получить исходное имя класса обратно, потому что не знаю какая буква была в середине слова в верхнем регистре.
Как то так :)
кстати usfirst есть а lcfirst появилась только в 5.3 :)
Я что единственный кто попытался этот движок поставить на сервер? o_O Устанавливал через файл-инсталлятор, всё условия подошли, всё чётко встало, БД коннект и вроде всё нормально. Пытаюсь зайти на сам сайт, а мне — Сайт временно недоступен. Попробуйте зайти через 5 минут.
Так и не понял к чему это вообще? Уже часов 12 вот так и недоступен:)) Автор, так как же увидеть твоё творение?
Так и не понял к чему это вообще? Уже часов 12 вот так и недоступен:)) Автор, так как же увидеть твоё творение?
Этот пример создаст файл /app/actions/AccountLoginAction.class.php и запишет туда «балванку» кода. Параметр tpl указывает имя шаблона, на основании которого необходимо cгенерировать новый класс. Шаблоны находятся в поддиректории tpl директории script. Вы можете создавать свои шаблоны в этой директории и указывать их имя с помощью опции tpl. По умолчанию выбирается шаблон с именем default.tpl.
А где эта директория script?
Эта документация сильно устарела. Структура директорий с тех пор сильно поменялась. Сейчас директория script называется scaffolding и находится в директории envos
Спасибо. А свежая документация где-то есть? )
Нет, к сожалению. Постараюсь восполнить этот пробел статьями на хабр о движке. Ну и, как я уже сказал, сам движок является неплохой документацией, и главное актуальной :)
Было бы неплохо всё же иметь небольшой набор документации, ну и на худой конец, действительно, статьи с примерами. :)
Если говорить в общем, то на данный момент у движка есть недостаток — это пока что, надеюсь, не сформированное комьюнити и малое количество модулей. А так-то перспективы вроде есть.
Сейчас в задумке один проект — за основу будет взят один из хабраподобных движков и доработан на заказ (понял, что свою лень мне не побороть, поэтому из программиста постепенно превращаюсь в заказчика :) ) — чисто хабровость будет немного размазана.
Пока что взгляд обращён на Livestreet как наиболее популярный на мой взгляд, но если к тому времени будут подвижки и у Envos.Blogs, то может быть и его выберу :)
Если говорить в общем, то на данный момент у движка есть недостаток — это пока что, надеюсь, не сформированное комьюнити и малое количество модулей. А так-то перспективы вроде есть.
Сейчас в задумке один проект — за основу будет взят один из хабраподобных движков и доработан на заказ (понял, что свою лень мне не побороть, поэтому из программиста постепенно превращаюсь в заказчика :) ) — чисто хабровость будет немного размазана.
Пока что взгляд обращён на Livestreet как наиболее популярный на мой взгляд, но если к тому времени будут подвижки и у Envos.Blogs, то может быть и его выберу :)
Дело в том что сама система расширений сделана недавно, а раньше все модули были монолитной частью движка. Именно поэтому расширения всего три, но по сути туда легко можно вынести гостевую, дискуссии и даже админку. Потихоньку буду это делать.
Насчет документаии, думаю следующее что я напишу, это подробно с примера ми статью о том как написать свой модуль. Кстати это очень просто, ибо есть скаффолдинг, и достаточно в командной строке набрать ./generate --extension=Somename и будет сгенерирован каркас нового экстеншена :)
Вообще, ИМХО, сильной стороной моего движка является именно Envos. По мне так фреймворк лайвстрита не такой мощный.
Насчет документаии, думаю следующее что я напишу, это подробно с примера ми статью о том как написать свой модуль. Кстати это очень просто, ибо есть скаффолдинг, и достаточно в командной строке набрать ./generate --extension=Somename и будет сгенерирован каркас нового экстеншена :)
Вообще, ИМХО, сильной стороной моего движка является именно Envos. По мне так фреймворк лайвстрита не такой мощный.
Текущий проект мне пишут на Yii, вот потому и мне интересен Envos (какие-то ассоциации всё-таки вызывает :) ). Но тут многое упирается в набор функционала — всё писать или заказывать тоже не хочется. Думаю подобные мысли будет не одного меня посещать. Так что сейчас главное всё же развивать комьюнити, которое и будет писать модули, как это сделано у того же Livestreet'а.
Мне вот сейчас показалось, что больше заостряется внимание на Google Code — имхо, лучше на сайт проекта народ перегонять, так больше вероятность люди там останутся и будут что-то общественно-полезное делать. :)
Мне вот сейчас показалось, что больше заостряется внимание на Google Code — имхо, лучше на сайт проекта народ перегонять, так больше вероятность люди там останутся и будут что-то общественно-полезное делать. :)
Топик-оправдание прямо: в первых параграфах автор рассказывает не о том, что это за программный продукт, а о том, что этот продукт не похож на Хабрахабр (в некоторых местах встречаются явные противоречия в силу такой манеры изложения).
Из замеченных минусов:
1. Нет 404 на постах и не только (юзер получает «редактировать удалить guest» О_о)
2. На демке Лого не ссылка (не хватает быстрой навигации по темам — те же хлебные крошки)
Скорость — есть куда оптимизировать (Grade E по YSlow), тот же кеш на стороне клиента картинок, джаваскриптов, хотя б на день ;)
Так же МЕТА, например, "ENVOS.Blogs — движок мультиблогов — ДискусииДискуссии ", по блогам одинаковые (гугля не любит такого), да и есть какие то проблемы в структуре: по Я 333 страницы в индексе, многих уже нет на сайте (да там нет 404), по Г 186 :)
Удачи в развитии ;)
1. Нет 404 на постах и не только (юзер получает «редактировать удалить guest» О_о)
2. На демке Лого не ссылка (не хватает быстрой навигации по темам — те же хлебные крошки)
Скорость — есть куда оптимизировать (Grade E по YSlow), тот же кеш на стороне клиента картинок, джаваскриптов, хотя б на день ;)
Так же МЕТА, например, "ENVOS.Blogs — движок мультиблогов — ДискусииДискуссии ", по блогам одинаковые (гугля не любит такого), да и есть какие то проблемы в структуре: по Я 333 страницы в индексе, многих уже нет на сайте (да там нет 404), по Г 186 :)
Удачи в развитии ;)
INSERT INTO messages SET from_id = «1841», to_id =, message = "", sender_ip = «92.126.59.160», senddate = NOW()
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' message = "", sender_ip = «my_ip :)», senddate = NOW()' at line 1
В AdminDoUpdateAction есть использование функции shell_exec — думаю неплохо было бы заменить здесь и в других местах, если есть, функционал на более «рискованный». Не думаю, что на всех хостингах она разрешена.
Sign up to leave a comment.
Очередной неклон хабра