Pull to refresh

Comments 130

UFO just landed and posted this here
Хм, в хроме еще круче :) А вот в фаерфоксе все нормально выглядит. Поправим, спасибо :)
UFO just landed and posted this here
Радикал — зло, картинка уже недоступна.
UFO just landed and posted this here
Готов ли движок к высоким нагрузкам?
Как кешируем?
Сколько запросов к MySQL при открытии главной?
а вот посоветуйте, чем лучше кешировать?
По кешированию — в тестах с лайвстритом мемкеш давал примерно 20-30% прироста скорости.
Не сочтите зарекламу, но советую взять нормальный ВПС как минимум, у меня щас проекты на фаствпс, всё летает. Там хоть можно настроить систему под себя, LAMP там, все дела :) Сами видите, что сейчас у Вас 503 без намека на восстановление. Если бы хотя бы nginx стоял…
Хочу добавить, что просто необходимо провести клиентскую оптимизацию: 10 файлов css, еще больше js — такое допустимо только в дефолтном шаблоне для простоты редактирования, на боевом проекте так нельзя.
UFO just landed and posted this here
UFO just landed and posted this here
Я конечно рад за хабру (хотя инногда мы и наблюдаем фразу «Мы скоренько»), но я не считаю его идеалом. Сейчас я в глубинке, и интернет у меня ооочень хиленький — загрузка страничек хабры оставляет желать лучшего в сравнении с некоторыми другими сайтами.
ну, прикрутят к очередному блогу Web Optimizer и забудут о клиентской оптимизации. Зачем каждый раз все руками делать?
случайно ентер нажался…
чем лучше кешировать? мемкеш на хостинге не досупен пользуюсь файловым, может есть чего получше?
Переходите ко мне на VDS, за месяц сделаем нормальное кеширование и оптимизацию
Будет хоть одна CMS заточенная под хайлоад :)
Кстати да, хороший вариант если нет интереса самому возится с сервером :)
А репутация сама за себя говорит…
Мне кажется что при создании движка такого типа это один из главных вопросов, который должен возникнуть.
да что-тако, кто на энтер отправку поставил!!??!?!?
Используется файловое кеширование. Но есть возможность кеширования в мемкеше. SQL запросов на главной 5 при включенном кеше, как сейчас.
Вообще движок оптимизировался, но понятно что обычный хостинг хаброэфект мог выдержать только по счастилвой случайности :) В принципе на данный момент проект работает, хоть и со скрипом.
По-настоящему оптимизированый движок на заход в главную анонимного пользователя должен делать 0 запросов, залогиненного — 1.

Вобщем мое предложение в силе — VDS бесплатно для движка на месяц.
Эм… а потом? :)
VDS это хорошо, там можно еще nginx-ом кешировать и статику раздавать :)
вот вас послушаешь — и кажется что у каждого из посетителей хабра или гугл или фейсбук по нагрузкам.
огласите, пожалуйста, статистику по своему самому нагруженному проекту?
Хабр опять победил!
Красиво излагаете — захотелось потрогать сей продукт :)
По окончании хабраэффекта будем-с изучать.
Я вас не понял =) У вас раздвоение личности? о_О
Вы решили устроить таким образом голосование?
Что я увидел? — «Service Temporarily Unavailable».
А полезного? — Ничего.
Вы бы написали, что движок на php — а то не понятно сразу=\
Про Zend Engine таки упоминается, да.
Service Temporarily Unavailable

The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

ето типа убиваем конкурентов в зародке?
да я когда зашел то дальше главной страницы не ушел, это 3.14…
сколько ж можно плодить многострадальный хабр? неужели сила мысли не летит дальше этой блог-системы?
нарекая своё детище «клон хабры» вы обрекаете её на неминуемую смерть, ибо клонов никто не любит.
Автор, по-моему, не раз упомянул, что не пытался делать клон хабра. Что движок является самостоятельным продуктом. Или слова автора уже ничего не значат?

Автор движка — молодец. Делает все под себя, гибко. Еще бы немсубурно излагал мысли, но если продолжит писать про движок, то, думаю, и это у него получится.
не нужно делать аналогий или отрицаний принадлежности к хабру. Название топика я прочитал (как думаю и многие) «очередной _клон_ хабра» а не «очередной _неклон_ хабра». К тому же не понятно: что пиарят — движок или готовый продукт?
Зачем же быть таким серьезным :)
>Итак, движок основан на собственном MVC Framevork называемом Envos.
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 и тем более не выделенного сервера :)
шансы уравниваются тем, что никаких оптимизаций не проводилось. код написан так как удобнее, а не как быстрее. безо всяких 100 слоёв кеширования и прочих свистулек.
Я тоже пишу код как удобнее. Преждевременная оптимизация — зло ©
Но шансы так не уравниваются, так как между тем VDS что предлагают поминимуму на keyweb и обычным хостингом просто пропасть.
И нет никаких 100 слоев кеширования, есть только файловый кеш данных. Причем похоже он не помог а наоборот усложнил дело, видимо израсходовал лимит файловых дескрипторов, так как это обычный хостинг и там лимиты маленькие.
а есть какая-то статистика нагрузки? на ГК, насколько я помню (проект не мой), в пике было около 1200http запросов/сек
Нет, подробной статистики нет. Только аналитикс, который так подробно статистику не показывает. Знаю только что в пике было 1200 хитов в час. Но в это время большую часть времени сервер лежал, и аналитикс понятно дело учел далеко не все хиты. Но повторяю, нельзя сравнивать VDS с 10-ю сайтами на сервере и полгигом оперативы и хостинг с тучей лимитов и кучей сайтов на одном серваке. Это просто несравнимо.
Да и вообще, как можно сравнивать два проекта. У ГК на главной 2 простейших SQL запроса. На остальных еще меньше. По сложности проекты просто несравнимы. Как несравнимы ресурсы серверов.
откуда дровишки про 2 запроса?
1 запрос выбирает категории (С++, PHP… ) 2-й запрос выбирает говнокод текущей категории. Для чего там больше?
ахаха, ну да ну да…
это в случае, если бы там была написана лапша from scratch
а тем не менее оно работает на довольно сложном и гибком каркасе, у которого ещё и свои потребности в запросах есть.
у меня тоже гибкий и сложный каркас. тут мы квиты)))
ну и навскидку: число страниц, конечно же, возьмётся из воздуха. текущий юзер — оттуда же. а ещё из воздуха возьмётся число комментариев которые ты ещё не прочитал в каждом из кодов.
вот так вот навскидку ещё 3 запроса.
число страниц это count(). Он считается мгновенно по индексу, при количестве записей меньше миллиона, этот запрос можно не учитывать. Текущий пользователь берется из сессии. Никаких запросов там не нужно. Тем более что большинство пользователей вообще неавторизованы. Количество комментариев считается тем же запросом что и выбирается говнокод. Если руки прямые. конечно.
нельзя не учитывать — ты первым начал считать запросы. это запрос? запрос. так что +1

текущий юзер — это такой же объект. в сессии хранится uid, по нему выгребается юзер.
про количество комментариев — перечитай мой коммент. там показываются комментарии в общем и которые не прочитал конкретно ты.

так что +3 запроса.
все данные по пользователю у меня хранятся в сессии. Никаких запросов не выполняется. Прочитанные и общие комментарии вычисляются одним запросом. Посторяю, каунт не считаются на сайте меньше тысячи записей. Это что слону дробина. На остальных страницах запросов еще меньше. При этом самих страниц меньше. Короче ты бы еще html страничкой на выделенном сервере померялся)))
напиши-ка запрос на выборку прочитанных и общих комментов в одном запросе, покажи EXPLAIN и расскажи о плане выполнения? :-)
причем тут план выполнения? У меня тоже есть сложные запросы. Блин я не понимаю чем мы меряемся. Сайт с 5-ю страницами и проект мультиблогов, да еще и с гостевой, фотогалерей и другим. Да у меня только одна страница собирается из десятка шаблонов. А это файловые операции. Блин это все равно что достоинство комара сравнивать с достоинством слона. :)) Несерьезно, ей богу.
я не сравниваю. я о том — что ты не в состоянии оценить сложность запроса.
собственно — твою позицию я понял, спасибо :-)
тебе ли не знать, что в любом «универсальном фреймворке» будет ещё тонна всяких служебных и нужных запросов.
Не знаю зачем во фреймворке нужны ненужные запросы :) И что там делают служебные. И что вообще такое служебный запрос. У меня таких нет.
естественно, в узкоспециализированном продукте будет запросов меньше и они будут только нужные.
у кого узкоспециализированный? Envos это полноценный полнофункциональный фреймворк.
пардон… нужных запросов… вобщем там нужно 2 запроса. Причем простых.
смотрим выше и посыпаем голову пеплом.
Кстати, спасибо за наводку на keyweb
Порадовали их тарифы, может быть воспользуюсь
UFO just landed and posted this here
Может не очень весомое замечание, но всё же мне кажется особый стиль для :hover у ссылок не помешает.
Вот бы ещё кто на rails сделал бы толковое двигло…
>>Есть в движке и ЧПУ, реализованное по типу того что есть в…
10 раз перечитал пока не полез на Википедию…
Интересно, прикрутят потом кросспостинг в ЖЖ?
Право, очень не помешала бы функция. Указываешь в профиле юзера данные ЖЖшечки, и при отправке записи в блог указываешь галочкой — кросспостинг
Не берусь говорить, что это всеобщеполезная функция, но вот мне, к примеру, такая штукенция не помешала бы.
если автор движка реализует работу через xml-rpc, то технически сложностей нет сделать такой функционал.
Если бы я был заядлым ЖЖистом то наверное уже сделал бы :) И еще в твитер. Вообщем спасибо за идею. Кстати, если проект будет развиваться, у меня есть мысли по еще более глобальной интеграции его в блогосферу. Но всему свое время ;)
Обращайтесь, если понадобятся какие-то идеи
У меня приятель сделал сайт, а в нем блог. И тоже реализовал позднее идею кросспостинга на основе соответствующего плагина для вордпресса
mywordpress.ru/plugins/ljxp/
После этого прибавилось и юзеров, и, собственно, сообщений на душу населения.
Если еще идеи появятся, можно их прясо сюда постить. Написанное на хабре может и позабыться :)
Пока не буду трогать движок, а вот сам фреймворк поковыряю, спасибо.

ЗЫ. Метод self() в статическом классе Envos порадовал :) Так и представил себе где-нить в его внутренностях вызов типа self::self()…
Ну движок является неплохой документацией к фрейморку ;)
Не знал про такую функию. Спасибо :)
Интернационализация предусмотрена, в том смысле что используется Utf-8, но я не рассчитывал что имена классов будут на русском, а эти методы и используются в дебрях движка для преобразования именно имен классов. Но спасибо за подсказку, исправим :)
Я имел в виду возможность автоматического перевода «служебных» текстов на указанный в настройках язык. Собственно вопрос возник при прочтении того же класса Utils — там Вы используете строки 'Мб', 'Кб' и т.д., т.е. иностранцы никакого перевода не получат.

Кстати, а в чем смысл переводить в нижний регистр только первую букву? Почему не strtolower()?
В будующем все эти тексты вынесутся в языковые файлы. Не стал делать это в первой же версии.

>Кстати, а в чем смысл переводить в нижний регистр только первую букву?

Смысл в том что имя класса экшена состоит из двух частей — имя модуля и имя экшена. Если для страницы явно не задано правило роутинга, то используется правило по умолчанию, то есть адрес страницы выглядит как /модуль/экнш/
Для красоты если имя класа экшена например UserProfile то адрес страницы будет /user/profile/ то есть первые буквы приведутся к нижнему регистру. Но потом по ним надо снова получить имя класса. В данном случае легко. Но что если имя класса UserCommentDel? Тогда сделав strtolower я не смогу получить исходное имя класса обратно, потому что не знаю какая буква была в середине слова в верхнем регистре.

Как то так :)
Используйте для разделения подчеркивание и будет Вам щасье :)
Ненавижу такой стиль именования классов :)
кстати usfirst есть а lcfirst появилась только в 5.3 :)
Я что единственный кто попытался этот движок поставить на сервер? o_O Устанавливал через файл-инсталлятор, всё условия подошли, всё чётко встало, БД коннект и вроде всё нормально. Пытаюсь зайти на сам сайт, а мне — Сайт временно недоступен. Попробуйте зайти через 5 минут.

Так и не понял к чему это вообще? Уже часов 12 вот так и недоступен:)) Автор, так как же увидеть твоё творение?
Идешь в app/protected/config/production/config.cnf.php и меняешь константу DEBUG_MODE с false на true
После этого увидишь сообщение об ошибке PHP, вероятно связанный с БД.
Этот пример создаст файл /app/actions/AccountLoginAction.class.php и запишет туда «балванку» кода. Параметр tpl указывает имя шаблона, на основании которого необходимо cгенерировать новый класс. Шаблоны находятся в поддиректории tpl директории script. Вы можете создавать свои шаблоны в этой директории и указывать их имя с помощью опции tpl. По умолчанию выбирается шаблон с именем default.tpl.


А где эта директория script?
Эта документация сильно устарела. Структура директорий с тех пор сильно поменялась. Сейчас директория script называется scaffolding и находится в директории envos
Спасибо. А свежая документация где-то есть? )
Нет, к сожалению. Постараюсь восполнить этот пробел статьями на хабр о движке. Ну и, как я уже сказал, сам движок является неплохой документацией, и главное актуальной :)
Было бы неплохо всё же иметь небольшой набор документации, ну и на худой конец, действительно, статьи с примерами. :)

Если говорить в общем, то на данный момент у движка есть недостаток — это пока что, надеюсь, не сформированное комьюнити и малое количество модулей. А так-то перспективы вроде есть.

Сейчас в задумке один проект — за основу будет взят один из хабраподобных движков и доработан на заказ (понял, что свою лень мне не побороть, поэтому из программиста постепенно превращаюсь в заказчика :) ) — чисто хабровость будет немного размазана.

Пока что взгляд обращён на Livestreet как наиболее популярный на мой взгляд, но если к тому времени будут подвижки и у Envos.Blogs, то может быть и его выберу :)
Дело в том что сама система расширений сделана недавно, а раньше все модули были монолитной частью движка. Именно поэтому расширения всего три, но по сути туда легко можно вынести гостевую, дискуссии и даже админку. Потихоньку буду это делать.
Насчет документаии, думаю следующее что я напишу, это подробно с примера ми статью о том как написать свой модуль. Кстати это очень просто, ибо есть скаффолдинг, и достаточно в командной строке набрать ./generate --extension=Somename и будет сгенерирован каркас нового экстеншена :)

Вообще, ИМХО, сильной стороной моего движка является именно Envos. По мне так фреймворк лайвстрита не такой мощный.
Текущий проект мне пишут на Yii, вот потому и мне интересен Envos (какие-то ассоциации всё-таки вызывает :) ). Но тут многое упирается в набор функционала — всё писать или заказывать тоже не хочется. Думаю подобные мысли будет не одного меня посещать. Так что сейчас главное всё же развивать комьюнити, которое и будет писать модули, как это сделано у того же Livestreet'а.

Мне вот сейчас показалось, что больше заостряется внимание на Google Code — имхо, лучше на сайт проекта народ перегонять, так больше вероятность люди там останутся и будут что-то общественно-полезное делать. :)

Yii отличный выбор. Сам на нем на работе пишу :) Видимо оттого и ассоциации :)
А как вы смотрите на создание CMS на основе YII? просто пописываю тут иногда в свободное время, и все думаю будет ли толк от этого не только для меня)
Мне кажется толк будет! Очень хорошая и гибкая структура Yii, хорошая документация должны сделать CMS популярной у разработчиков как минимум
Значит буду работать над ней дальше) Спасибо, и удачи вас с вашим проектом)
Топик-оправдание прямо: в первых параграфах автор рассказывает не о том, что это за программный продукт, а о том, что этот продукт не похож на Хабрахабр (в некоторых местах встречаются явные противоречия в силу такой манеры изложения).
привязались вы, движек прекрасно расширяем и можно сделать настоящий «нехабр».
Наверное надо было больше смайликов использовать :)
Из замеченных минусов:
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
вот забавно. Я в одном месте IP изменил, а в другом — нет :)
fixsed. а как такое удалось получить?
В AdminDoUpdateAction есть использование функции shell_exec — думаю неплохо было бы заменить здесь и в других местах, если есть, функционал на более «рискованный». Не думаю, что на всех хостингах она разрешена.
Да, я знаю. Для первой версии делал как проще. Но у Envos есть механизм абстракции от OS, но он еще не сильно развит. Со временем я буду избавляться от таких некросплатформенных мест.
Sign up to leave a comment.

Articles