Статьи
CMS Битрикс. За и против.
Проработав 2 года с CMS Битрикс, у меня сформировалось свое отношение к этому движку. Есть как плюсы, так и минусы, но все же негатива накопилось гораздо больше.
В этой статье я поделюсь своим мнением с читателями и постараюсь описать и хорошие, и плохие стороны этой CMS.
Во-первых, хочется сказать пару слов о тормозах этой системы. В этом ее любят обвинять очень многие.
Для простых сайтов движок вполне подходит и тормозов в этом случае наблюдаться не будет, если, конечно, проектировщик не допустил откровенных ляпов при создании структуры инфоблоков (о том что это за зверь сейчас узнаем).
Тормоза начинаются, когда от сайта требуется что-то большее, нежели обычный текстовый контент. В этом случае проектировщик сталкивается с неуклюжестью движка.
В битриксе все основывается на понятии инфоблока. Давайте рассмотрим что же на самом деле из себя представляет инфоблок.

Инфоблок — это такая сущность, которая объединяет элементы с определенным набором свойств. Часть свойств, такие как название элемента, раздел, даты активности и т.п., присутствует у элементов всех инфоблоков. К этим свойствам проектировщик может добавить еще и свои свойства, но они уже будут рассматриваться в контексте каждого конкретного инфоблока.
Существует также понятие типа инфоблока, который объединяет в себе инфоблоки.
Поясню на примере. Допустим, мы создаем сайт, на котором будут размещены вакансии.. В этом случае нам будут необходимы 3 инфоблока: «Вакансии», «Отрасли», «Компании».
После создания инфоблока «Вакансии» мы можем создать в нем элементы со стандартным набором свойств:
- Название
- Активность (да/нет)
- Период активности (активен в указанный период времени)
- Краткое описание
- Подробное описание
- Изображение-превью
- Увеличенное изображение
- Раздел
Этих свойств будет достаточно для обычного текстового контента (статьи, новости и т.д.), но нам для вакансий этого не хватит. Мы создадим еще свойства:
- Компания (свойство, ссылающееся на инфоблок «Компании»)
- Отрасль (свойство, ссылающееся на инфоблок «Отрасли»)
- Опыт работы (свойство типа список с значениями «до 2-х лет», «от 2-х до 4-х лет», «более 4 лет» и т.д.)
В инфоблоке «Отрасли» и «Компании» ограничимся стандартным набором свойств, которые предоставляет нам битрикс.
Вот, что у нас получилось:

Вроде бы с точки зрения теории баз данных у нас все верно. Все сущности разделены, избыточности нет и т.д. Но давайте взглянем на структуру базы.
Рассмотрим как работает выборка из инфоблоков на простом примере. В битриксе существует часть таблиц в базе данных, которые хранят данные, связанные с инфоблоками — сами инфоблоки (b_iblock), их элементы(b_iblock_element), свойства(b_iblock_property), значения свойств (b_iblock_element_property).
Это не все таблицы, связанные с инфоблоками, но для простоты понимания нас будут интересовать именно они.

Как видим, элементы всех инфоблоков хранятся в одной таблице, все свойства этих элементов так же хранятся в одной таблице.
Как же так! Зачем СУБД копаться в вакансиях, отраслях, если нам нужно будет выбрать всего лишь список всех компаний, вакансии которых храняться в базе ?!
А что будет, если нашему сайту необходим более сложный функционал? Вот тогда то и начнутся тормоза.
Теперь воспользуемся АПИ битрикса и выберем список вакансий конкретной компании, но те вакансии, которые не относятся к определенной отрасли.
В примере происходит выборка из инфоблока «Вакансии», ID которого 23, а также происходит фильтрация по компании, ID которой 373, и по отрасли, ID которой 317. В последнем параметре метода GetList передается список выбираемых полей — ID, компания, опыт работы, начало периода активности вакансии.
1 2 3 4 5 6 7 |
$arFilter = Array( "IBLOCK_ID"=>23, // выбираем элементы из инфоблока, ID которого 23 "ACTIVE"=>"Y", // выбираем только активные элементы "PROPERTY_COMPANY"=>373, // вакансии будут принадлежать компании с ID=373 "!PROPERTY_BRANCH" =>317 // вакансии, принадлежащие отрасли с ID=317, нас не интересуют ); $res = CIBlockElement::GetList(Array("DATE_ACTIVE_FROM"=>"ASC"), $arFilter, false, false, Array("ID", "PROPERTY_COMPANY", "PROPERTY_EXPERIENCE", "DATE_ACTIVE_FROM")); |
Выглядит красиво, прямо как-будто один безобидный SQL запрос, но заглянем внутрь:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
SELECT BP.* FROM b_iblock_property BP, b_iblock B WHERE BP.IBLOCK_ID=B.ID AND B.ID IN (23) AND UPPER(BP.CODE)=UPPER('COMPANY') SELECT BP.* FROM b_iblock_property BP, b_iblock B WHERE BP.IBLOCK_ID=B.ID AND B.ID IN (23) AND UPPER(BP.CODE)=UPPER('EXPERIENCE') SELECT BP.* FROM b_iblock_property BP, b_iblock B WHERE BP.IBLOCK_ID=B.ID AND B.ID IN (23) AND UPPER(BP.CODE)=UPPER('BRANCH') SELECT BE.ID AS ID, FPV0.VALUE AS PROPERTY_COMPANY_VALUE, FPV0.ID AS PROPERTY_COMPANY_VALUE_ID, FPEN0.VALUE AS PROPERTY_EXPERIENCE_VALUE, FPEN0.ID AS PROPERTY_EXPERIENCE_ENUM_ID, FPV1.ID AS PROPERTY_EXPERIENCE_VALUE_ID,IF(EXTRACT(HOUR_SECOND FROM BE.ACTIVE_FROM)>0, DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y')) AS DATE_ACTIVE_FROM,IF(EXTRACT(HOUR_SECOND FROM BE.ACTIVE_FROM)>0, DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y')) AS ACTIVE_FROM FROM b_iblock B INNER JOIN b_lang L ON B.LID=L.LID INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID INNER JOIN b_iblock_property FP0 ON FP0.IBLOCK_ID = B.ID AND FP0.CODE='COMPANY' LEFT JOIN b_iblock_property FP1 ON FP1.IBLOCK_ID = B.ID AND FP1.CODE='EXPERIENCE' LEFT JOIN b_iblock_property FP2 ON FP2.IBLOCK_ID = B.ID AND FP2.CODE='BRANCH' INNER JOIN b_iblock_element_property FPV0 ON FPV0.IBLOCK_PROPERTY_ID = FP0.ID AND FPV0.IBLOCK_ELEMENT_ID = BE.ID LEFT JOIN b_iblock_element_property FPV1 ON FPV1.IBLOCK_PROPERTY_ID = FP1.ID AND FPV1.IBLOCK_ELEMENT_ID = BE.ID LEFT JOIN b_iblock_element_property FPV2 ON FPV2.IBLOCK_PROPERTY_ID = FP2.ID AND FPV2.IBLOCK_ELEMENT_ID = BE.ID LEFT JOIN b_iblock_property_enum FPEN0 ON FPEN0.PROPERTY_ID = FP0.ID AND FPV1.VALUE_ENUM = FPEN0.ID WHERE 1=1 AND ( ((((BE.IBLOCK_ID = '23')))) AND ((((BE.ACTIVE='Y')))) AND ((((FPV0.VALUE_NUM = '373')))) AND ((( FPV2.VALUE_NUM IS NULL OR NOT (FPV2.VALUE_NUM = '317')))) ) AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL))) ORDER BY BE.ACTIVE_FROM ASC |
Ужас! А что же тогда творится с СУБД на реальных сайтах.
Мы при написании метода GetList использовали 3 свойства (ключи значений массивов, начинающиеся с «PROPERTY_») и в SQL-запросах, которые сгенерил битрикс, видим 3 запроса для каждого из 3-х свойств. А что будет, если создать десятки свойств? А будет ровно столько запросов сколько участвует в методе GetList.
Ну и в конце мы видим громадный запрос, напичканный join'ами. Если приглядеться к этому запросу, то можно догадаться, что количество join'ов зависит от количества свойств, участвующих в методе GetList.
Понятно, что все это плата за универсальность. Все те, кто используют битрикс любят повторять, что это далеко не идеальная система, но это лучшая CMS из всех существующих. А чем она лучше? Да только, пожалуй, тем, что у нее присутствует больше всевозможных модулей по сравнению с другими CMS. Еще есть удобная админка, в которой быстро разберутся модераторы. Так же битрикс постоянно обновляется и пополняется новыми модулями, в этом тоже его плюс.
Как я уже сказал, мое мнение, что битрикс сгодится только для простых сайтов. Если требуется какой-то более менее сложный функционал, то приходится ломать голову как обойти эти издержки универсальности.
Возникает вопрос. Зачем простому сайту, на котором в основном статьи и новости, дополнительные модули в виде магазина, форума, блогов, тормозной статистики (которую к тому же предлагают многие бесплатные сервисы). А ведь такой сайт программист может без проблем создать, например, на бесплатном фреймворке symfony, в котором админка генерится одной командой. Так зачем платить больше?
Ну а сайт со сложным функционалом, как я уже сказал, по моему мнению начинать делать на битриксе лучше не стоит. Эта затея перерастет в поиски путей обхода битриксовых фич.
И все-таки смысл создавать сайты на битриксе, как мне видится, есть. Но прежде, чем описать свою точку зрения на этот счет, нужно сказать несколько слов о многочисленной армии кодеров-битриксоидов.
Это такие люди, в основном студенты, которые еще не слышали ни о теории баз данных, ни о паттернах проектирования, не работали с существующими фреймворками. Для них битрикс — это все, что стоит за сайтом. Они даже о новых технологиях узнают только тогда, когда она будет включена в очередную версию CMS.
Как-то раз ко мне подошел один из сотрудников за помощью. Он парсил файл CSV, но этот процесс у него отрабатывал не верно. Стали смотреть скрипт и тут программист высказывает свое предположение: «Может быть битрикс где-то закрался?». Может быть всемогущий битрикс каким-то магическим образом и мог бы закрасться в его скрипт, но дело в том, что он его запускал без подключения движка. На самом деле потом нашли обычную ошибку в логике самого скрипта.
Еще был случай. Отмечали чей-то день рождения и двое программистов начали обсуждать все достоинства битрикса. Один из них кинул фразу: «Ну битрикс — это очень мощная система, он внутри себя и язык Си использует, и ассемблер». Второй округлил глаза и не поверил. А тот ему: «Ну ты залезь в код битрикса, посмотри». Тут вообще без комментариев.
Так вот, мое мнение, что создавать сайты на битриксе имеет смысл, но только для менеджеров. Они не знают всех тонкостей работы движка, его подводных камней.
Им выгодно иметь в своем штате битриксоидов, которым не нужно платить нормальные деньги, ведь это еще новичек, который дальше битрикса ничего не видел. Да и работать он будет с системой, в которой уже большинство вещей сделано за него.
Таким образом, на свет появляются web-студии, которые штампуют на битриксе сайт за сайтом. Их основной задачей в итоге становиться увеличение штата сотрудников, способных делать сайты на битриксе. Дешевая рабочая сила. Чем больше штат, тем больше сайтов они смогут клепать.
И напоследок хотелось бы дать совет начинающим программистам. Не устраивайтесь на работу в web-студии, которые в своих описаниях вакансий упоминают слово «Битрикс». Если вы начнете свой карьерный путь с этого движка, то потом соскочить с него будет не просто. Пройдет года 2 и ваши друзья уже неплохо продвинуться в программировании, кто-то перерастет в проектировщика, а вы будете жить одними инфоблоками и не понимать что происходит внутри.
Я сейчас не говорю о всех, но именно таких программистов я встречал часто. Конечно, все люди разные, кто-то может на работе использовать битрикс, но дома в целях самообразования тренироваться в других областях программирования. Но все же лучше набираться знаний на работе, где человек проводит большую часть своего времени.
На этом все. Спасибо за внимание. В комментариях жду ваших мыслей по поводу использования битрикса.
На эту статью оставлено 84 комментария
-
-
-
Константин
11 Февраль 2010 22:44:00 (ссылка)спасибо за ответ
меня интересует, стоит ли делать похожий на битрикс функционал в части инфоблоков?
поясню вопрос на примере:
имеется пользователь, которому необходимо добавить свойство ИННсейчас я делаю это хуками как в тайпо3 или в друпале - расширяю функции вывода формы и сохранения данных из формы
в то же время, у меня в цмс уже есть раздел инфоблоков - в хукнутых функциях я использую как раз данные этих инфоблоков.. но хуки - это ручная работа...
поэтому вопрос - стоит ли заморачиваться и делать автоматическое формирование запросов в инфоблоки или остановиться на хуках ?
-
-
Константин
15 Февраль 2010 02:23:56 (ссылка)ясно, вы ратуете за производительность
довольно разумный аргумент, но фиксить его придется сразу в нескольких местах, если делать вручную - вывод формы, например, регистрации, форма поиска и тп..
но делается один раз на продакшен версию, поэтому, наверняка, вы правы
вот скриншот цмски http://easycaptures.com/fs/uploaded/453/8547516650.png
-
sasha84
16 Февраль 2010 12:34:58 (ссылка)Но раз вы пишите цмс, то в любом случае там должна присутствовать универсальность.
На сколько я понял, для добавления каждого нового свойства для пользователя вам придется лезть в код и дописывать его, а это уже не есть хорошо. Ведь цмс создается прежде всего для модераторов, т.е. для легкости управления сайтом.
Поэтому скорее всего имеет смысл хранить эти свойства в базе, просто модель стоит продумать как можно проще и лично я бы не ориентировался на модель битрикса.А скриншот впечатляет.
-
-
web master
26 Февраль 2010 23:34:44 (ссылка)Битрикс - это довольно старая система. Там ряд модулей был написан еще в 2002 году для PHP4 и постепенно они развивались сохраняя обратную совместимость вот уже более 8 лет. Можете представить что в результате вышло.
В то время когда у обычных веб систем цикл жизни составляет 3-4 года, затем они начинают переписываться с нуля с учетом новых тенденций и новых возможностей языков, у Битрикс многое идет поверх старого кода. Я имею в виду новая идеалогия базируется на старых принципах.
Основной недостаток и в то же время преимущество Битрикса это идеалогия обратной совместимости и обновлений.
С одной стороны для сайта это хорошо, так как он обновляется, латаются дырки в безопасности, код становится быстрее, причем без всякого участия заказчика, но с другой стороны код Битрикса обновляясь с обратной совместимостью, становится более громоздким, начинает теряться контроль над кодом, все сложнее становится его обновлять и оптимизировать.
Тем не менее программисты Битрикса все равно молодцы. Они стараются по мере сил решить эту проблему. Новые модули так вообще просто выдающиеся (типа "Бизнес-процессы"). Старые и медленные модули постепенно вытесняются (документооборот к примеру вытеснен теми же бизнес-процессами). Следуя такой практике думаю в конце концов обновится и вся система.
Все равно на сегодняшний день Битрикс является одной из самых лучших CMS систем не только в России, но и в мире. В USA все пищат от Drupal, от которого я лично совсем не в восторге, Европа любит Typo3. Но Россия выбирает Битрикс
)) шучу. -
sasha84
28 Февраль 2010 16:51:56 (ссылка)2web master
Возможно битрикс и является одной из лучших cms в мире, но я не вижу смысла его вообще использовать именно программистам.Во-первых, он платный. Покупая битрикс, вы получаете тормозной сайт. Свои тормоза разработчики битрикса вряд ли исправят в обозримом будущем, т.к. для этого им придется пересмотреть само ядро своего движка. Проще будет написать все с нуля.
Во-вторых, если нужен несложный сайт, то можно поставить бесплатную cms. Если сайт сложный, то потребуется программирование на АПИ Битрикса. Но зачем это нужно? Можно использовать существующие бесплатные фреймворки.
P.S. Да у Битрикса одним из преимуществ является совместимость с предыдущими версиями и обновления. Все это, конечно, хорошо, вот только и здесь все не без ошибок. У меня был случай, когда заказчик решил сам обновить систему, нажал на кнопку и положил тем самым сайт.
-
web master
01 Март 2010 18:51:34 (ссылка)> sasha84
Наверное не секрет что для каждого проекта нужно подбирать соответствующее решение.
Я категорически против того чтобы Битрикс позиционировался как универсальное решение для любого проекта. Но для ряда проектов это вполне приемлимый вариант. Да, для перфекционистов Битрикс вряд ли подойдет, да, для senior level разработчиков Битрикс нафиг не упал, но есть огромная прослойка веб программистов для которых Битрикс это просто способ быстро заработать деньги на простых проектах. Вот для них эта система и написана. -
-
sasha84
02 Март 2010 13:48:20 (ссылка)2 web master.
>>Я категорически против того чтобы Битрикс позиционировался как универсальное решение для любого проекта. Но для ряда проектов это вполне приемлимый вариант.Согласен. Но сам битрикс так себя и позиционирует, заявляя, что их cms "подходит по функциональным возможностям для 95% современных проектов". По моему очень смелое заявление, рассчитанное на непосвященных.
>>есть огромная прослойка веб программистов для которых Битрикс это просто способ быстро заработать деньги на простых проектах. Вот для них эта система и написана.
Таких программистов действительно много. Все они трудятся в веб-студиях, которые делают на битриксе абсолютно все - сайты для заказчиков, какие-то свои внутренние задачи, а все потому, что по другому не умеют. Битрикс для них как единственная возможность к существованию. При всем при этом они еще позиционируют себя как ведущие веб студии рунета.
2 Константин
Этот модуль появился совсем недавно, а с битриксом я уже не работаю и в ближайшем будущем не планирую. В принципе он у них достаточно подробно описан в мануале -
web master
02 Март 2010 22:20:48 (ссылка)> Битрикс для них как единственная возможность
> к существованию.ну вы уж совсем драматизируете
)) еще скажите что без Битрикса у них начинается ломка...у каждого свой путь.. никто никого на работе насильно к стулу не привязывает и не держит...
когда то надо пособирать сайте и на Drupal и на phpNuke и на Битриксе в конце концов...Битрикс не так уж и плох даже для обучения... в нем много полезных и интересных технологий для начинающих...
-
web master
02 Март 2010 22:22:47 (ссылка)> но сам битрикс так себя и позиционирует,
> заявляя, что их cms “подходит по функциональным
> возможностям для 95% современных проектов”обычная реклама и маркетинг.. не стоит доверять этому полностью только из за того что это софтверный продукт, а не скажем какой нить чудо пылесос....
-
sasha84
04 Март 2010 15:39:25 (ссылка)>> ну вы уж совсем драматизируете
)) еще скажите что без Битрикса у них начинается ломка…Нет, не драматизирую. Я сам работал в подобной фирме, я знаю про что говорю. Никто, конечно, к стулу никого не привязывает, просто в этом заключается политика компании - все делать на битриксе, по другому не умеем.
>> Битрикс не так уж и плох даже для обучения… в нем много полезных и интересных технологий для начинающих…
Совершенно не согласен. Жаль тех программистов, которые начинают свой путь с битрикса. Они не работают с базой, не строят сами запросы, проектируют только инфоблоки и т.д. Используют просто готовое и очень часто не знают, что за этим стоит.
>> обычная реклама и маркетинг.. не стоит доверять этому полностью только из за того что это софтверный продукт, а не скажем какой нить чудо пылесос….
Я не доверяю
, а вот другие в это верят и используют битрикс там, где он совсем не нужен. В том числе и веб-студии, у которых без битрикса начинается ломка
. -
banshee
19 Март 2010 23:56:54 (ссылка)> Ну и в конце мы видим громадный запрос, напичканный join’ами. Если приглядеться к этому запросу, то можно догадаться, что количество join’ов зависит от количества свойств, участвующих в методе GetList.
В таких случаях нужно использовать хранение свойств инфоблоков в отдельных таблицах. Количество джойнов сокращается радикально. Учите матчасть.
-
sasha84
20 Март 2010 01:56:34 (ссылка)А вы вообще заглядывали внутрь того, что происходит, когда вы используете так называемые Инфоблоки 2.0, т.е. хранение свойств в отдельных таблицах?
Ваши слова говорят о том, что вы недостаточно знакомы с этой темой.
Вы понимаете для чего дана возможность хранения свойств каждого инфоблока в отдельных таблицах?
Да потому что при большом объеме данных таблица, в которой хранятся свойства, становится нереально огромной и выборки из нее очень тормозят.
Инфоблоки 2.0 решают проблему тяжелых обращений к этой таблице. Значительного уменьшения джоинов при этом не происходит (ну, конечно, зависит еще от кол-ва свойств).
Да, их становится меньше за счет того, что не происходит уже объединений с таблицами b_iblock_property и b_iblock_element_property, т.к. все данные из них для конкретного инфоблока перенесены в одну таблицу. Но запрос при этом все равно получается тормозной, не от одних джоинов зависит скорость выполнения запроса.
Инфоблоки 2.0 лишь частично решают проблему тормозных запросов битрикса.P.S. Матчасть говорите?
Учите теорию баз данных, а не документацию битрикса. -
banshee
20 Март 2010 02:20:06 (ссылка)> Вы понимаете для чего дана возможность хранения свойств каждого инфоблока в отдельных таблицах?
> Да потому что при большом объеме данных таблица, в которой хранятся свойства, становится нереально огромной и выборки из нее очень тормозят.Не-а. Просто при хранении свойств в общей таблице конструктор запросов битрикса громоздяпит по 2 джойна на каждое свойство, а при хранении свойств в отдельных таблицах -- по джойну на каждую таблицу.
> Ваши слова говорят о том, что вы недостаточно знакомы с этой темой.
Ага, и ещё писаюсь в постель.
-
sasha84
20 Март 2010 03:13:01 (ссылка)> Не-а. Просто при хранении свойств в общей таблице конструктор запросов битрикса громоздяпит по 2 джойна на каждое свойство, а при хранении свойств в отдельных таблицах — по джойну на каждую таблицу.
Ну так и есть. И что? Это решает полностью проблему тормозных запросов по вашему?
Скорость выполнения запроса увеличивается, но все равно остается на неприемлемом уровне.Вас послушать, если убрать все джоины, сайт будет летать.
> Ага, и ещё писаюсь в постель.
Неужто в таком восторге от битрикса?
-
-
sasha84
20 Март 2010 15:50:57 (ссылка)> Ага. То есть, вы знали, как можно оптимизировать запрос, но для написания поста выбрали пессимальный способ?
Во-первых, статья не о способах ускорения битрикса.Во-вторых, это не "пессимальный" запрос, а один из запросов битрикса, далеко не самый худший.
Я привел в примере запрос, который получается при дефолтной структуре хранения данных инфоблоков.
Если перевести описанные инфоблоки на инфоблоки 2.0 и запустить тот же GetList, то просто получиться немного измененный, но также громадный и тормозной запрос.
Поэтому не вижу никакого смысла описывать такой запрос, к нему подойдет все вышесказанное. -
banshee
21 Март 2010 02:08:54 (ссылка)> Поэтому не вижу никакого смысла описывать такой запрос, к нему подойдет все вышесказанное.
Не-а. Если вынести свойства инфоблока в отдельную таблицу, то можно добавить индекс на то свойство, которое участвует в выборке. На больших объёмах данных это хорошо ускоряет запрос.
И, если уж говорить о дефолтах, то по умолчанию за счёт битриксового кеширования такие запросы исполняются раз в час, не так ли?
-
banshee
21 Март 2010 02:33:02 (ссылка)И ещё одно замечание.
То, что запрос выглядит монструозно, не означает, что он исполняется долго. Есть же и режим отладки (Админпанель -> Разработка -> Отладка -> Суммарная статистика), и монитор производительности. Воспользуйтесь этими инструментами, покажите, за сколько миллисекунд исполняется тот или иной запрос. Иначе это всё разговоры в пользу бедных.
-
banshee
21 Март 2010 04:10:59 (ссылка)> Константин
> 02 Март 2010> а каковы возможности модуля Бизнес-процессы? только работа с документами или еще что-то, что не открывается с первого взгляда ?
Потенциально очень хороший модуль, но пока сырой. Я буду использовать этот модуль не ранее, чем через полгода, когда в нём устранят большую часть косяков.
А косяков там есть.
-
sasha84
21 Март 2010 22:00:17 (ссылка)> Не-а. Если вынести свойства инфоблока в отдельную таблицу, то можно добавить индекс на то свойство, которое участвует в выборке. На больших объёмах данных это хорошо ускоряет запрос.
Хорошо ускоряет по сравнению с чем? По сравнению с другими тормозными запросами битрикса?
Не спорю, есть некоторые способы ускорения битрикса, но вам никогда не добиться от него вменяемой производительности.Битрикс задуман для ускорения разработки сайтов. Разработчику, знакомому с симфони, например, потребуется примерно столько же времени на сайт, сколько его нужно для написания на битриксе. Да, там не будет всяких наворотов от битрикса (которые часто и так не нужны), но результатом будет производительность, которая в разы превосходит битриксовую.
> И, если уж говорить о дефолтах, то по умолчанию за счёт битриксового кеширования такие запросы исполняются раз в час, не так ли?
При чем тут дефолтные структуры хранения данных и кеширование? И при недефолтных вы будете использовать кеширование.Насчет, самого кеширования. Да, оно, конечно, помогает, но это не панацея от всех бед. Довольно часто возникают ситуации, когда кеширование применить нельзя.
> То, что запрос выглядит монструозно, не означает, что он исполняется долго. Есть же и режим отладки (Админпанель -> Разработка -> Отладка -> Суммарная статистика), и монитор производительности. Воспользуйтесь этими инструментами, покажите, за сколько миллисекунд исполняется тот или иной запрос. Иначе это всё разговоры в пользу бедных.
Я и не говорю, что означает. Я говорю, что запросы сами по себе тормозные. На небольших объемах данных все работает прекрасно, а вот, когда в базе хранится огромное количество данных, вот тогда-то и становится заметна неуклюжесть движка вместе с его запросами.
Я принимал участие в разработке одного очень известного интернет-магазина на битриксе, в котором товаров около 3 миллионов.
Так вот в нем отображается список разделов, в которых есть товары. У разделов есть подразделы, у подразделов еще подразделы и т.д.
Так вот построение одного этого списка занимало около минуты. А все из-за неоптимального хранения данных. Спасало только кеширование.
-
web master
22 Март 2010 19:45:32 (ссылка)ну из своей практики могу рассказать что пару лет назад мне пришлось написать UDF функцию на Си для MySQL которая парсила и могла фильтровать поля с бинарными данными прямо в SQL запросе... в этих бинарных данных было закодировано то что называется в Битриксе множественные свойства (одинарные свойства объектов при этом хранились в самой основной таблице)... запрос работал только по одной таблице без join'ов... работало относительно быстро (0.8 сек на запрос) на объемах около 10 миллионов записей в основной таблице...
во втором случае когда я столкнулся с оптимизацией крайне хитрого и сложного каталога, где вообще все было очень плохо и тяжело... я воспользовался поисковым движком Sphinx который позволяет фильтровать по одинарным и множественным свойствам объектов... Sphinx написан на Си... ставится в систему отдельно... объемы были порядка 30 миллионов объектов... работает просто нереально быстро... странички каталога дольше 0.2 - 0.5 сек не работали никогда...
но в Битриксе такие подходы конечно не сработают... цена за универсальность....
там надо просто создавать структуру таблиц непосредственно заточенную для конкретную задачу... API же инфо блоков должен уметь понимать такие произвольные структуры таблиц... там в принципе нет ничего сложного.. можно глянуть к примеру Zend Framework там есть похожая реализация...
-
sasha84
23 Март 2010 13:09:43 (ссылка)2 web master
А что вы имеете ввиду, говоря о Zend Framework?
В нем же ведь вы сами проектируете базу данных, а потом через модели обращаетесь к ней за выборками, при этом строите sql-запросы, используя предназначенные для этого интерфейсы зенда.В битриксе ведь такое невозможно, использование sql-запросов в нем не рекомендуется. Но, если их даже и использовать, то говорить тут уже об универсальности не приходится.
Кроме того, в битриксе вы точно не будете проектировать базу данных или модифицировать ее.Или я что-то не понял?
-
web master
23 Март 2010 17:47:02 (ссылка)> А что вы имеете ввиду, говоря о Zend Framework?
На самом деле я имел саму идею функционала реализованного в классах Zend_DB, а именно
1) одна таблица хранит объекты
2) одинарные свойства объектов - столбцы этой таблицы
3) множественные свойства - доп. таблицы со связью один ко многим. При этом Zend автоматически предоставляет новые методы, позволяющие иметь дело с этими новыми таблицами.Посмотреть саму суть идеи можно тут:
http://framework.zend.com/manual/en/zend.db.table.relationships.htmlНа самом деле в этой идее нет ничего нового и революционного. Это старая добрая кодо генерация. Когда автоматически генерируется API и подстраивается под создаваемую структуру базы данных.
Касаемо Битрикса я эту идею вижу в следующем виде:
1) Ручками (или как угодно) создаются таблицы в базе данных по определенны строгим правилам для хранения объектов и их одинарных свойств. Помимо этого создаются таблицы для хранения множественных свойств объектов.2) Где нибудь в настройках модуля инфо-блоков есть интерфейс позволяющий выбрать нужные таблицы и грубо говоря нужно нажать только на кнопку "Сгенерировать API".
3) По нажатию кнопки генерируются специальные файлы конфигурации (по сути это все что и делает кнопка "Сгенерировать API"). Эти файлы читает основной код инфоблоков и предоставляет соответствующий API (очевидно активно используя magic method'ы __call(), __get(), __set() и т.д.)
К примеру:
1) создаем таблицу
b_user
В ней поля:
- id (unique)
- email (unique)
- name
- gender
и т.д.
Эти поля в дальнейшем превратятся в свойства объекта user. И будут автоматически доступны для записи/чтения (см. pattern ActiveRecord).
Затем создается таблица скажем b_user_job где хранится информация о всех местах где юзер работал (связь один ко многим).
2) Далее идем в настройки модуля и жмем фолшебную кнопку. Генерируются файлы конфигурации, и после этого волшебным образом появляются такие методы какloadUserByID()
loadUserByEMail()
getUserJobs()при этом метод getUserJobs() возвращает объект типа Request позволяющий делать к примеру вот так:
getUserJobs()->where('name like ?', '%Вася%')->order('id desc')->...и т.д. т.е методы просто становятся доступны и их можно будет использовать (сам код инфо блоков не меняыется). Очевидно код инфо блоков должен перехватывать вызовы таких методов через __call() и соответственно обрабатывать.
Вобщем говоря научным языком - код инфо блоков адаптируется под базу данных. Суть этого модуля будет сводится к тому чтобы прочитать структуру заданных таблиц и дать программисту нужный API, вот и все. При этом устраняются все недостатки существующей схемы:
- программист сам думает как ему спроектировать базу
- нет никакой "платы за универсальность"
- все работает настолько быстро насколько в принципе может работатьПризнаться я эту идею позаимствовал в свое время и немного расширил в своей собственной framework. Реализация не сказать чтобы сильно сложная, но для этого нужно перепроектировать весь Битрикс с нуля, так как возвращаясь к уже сказанному - битрикс в своей основе сильно устарел.
-
web master
23 Март 2010 18:12:57 (ссылка)> В битриксе ведь такое невозможно,
> использование sql-запросов в нем не
> рекомендуется.В 2002 году было решено дать такую рекомендацию партнерам только лишь из за того что считалось что база служит только CMS, но не программисту. И если программист хочет что то хранить в базе то он обязан использовать соответствующий API этой CMS. Напрямую же он делать ничего с базой не имеет права.
Также была идея в том что на работающем сайте можно и вполне реально модифицировать структуру данных, добавляяя новые свойства и т.д.
Также была идея что сайт можно программировать в визуальном режиме используя визуальный редактор - идея "сайт для домохозяек".
Я лично считаю что эти идеи ошибочны в корне.
1) База должна служить программисту, а CMS должна *помогать* ему (генерировать удобный API), а не узурпировать единоличное право работать с базой.
2) Любой сайт должен проходить итеративные стадии:
- разработки
- тестирования (UnitTest'ы, QA и т.д.)
- выкладки (deployment на QA, stage и production сервера)
И затем никакие модификации структуры недопустимы на production сервере, ибо любое изменение функционала требует тестирования и утверждения для начала!3) Ни один уважающий себя веб программист не будет программировать сайт используя *только* визуальный редактор Битрикса. Ибо это и медленно и не удобно. В любом случае он будет открывать файлы в своем любимом редакторе и там их править и затем смотреть как вся эта красота выглядит в IE, FF, Opera и т.д. Сайт же сделанный только в визуальном редакторе (домохозяйкой) будет представлять из себя крайне жалкое зрелище не стоящее потраченных денег на лицензию Битрикса.
Вобщем Битрикс несмотря на то что молодцы, все таки допустили, по моему, ряд ошибок архитектурного характера изначально. Но вообще в те годы мало кто думал по другому, да и вообще как то думал. CMS тогда были едва зарождавшимся рынком, да и PHP был намного скормнее по возможностям. Так что эти ошибки были неизбежны отчасти.
-
web master
23 Март 2010 18:21:43 (ссылка)Да, я еще забыл добавить, что по нажатию на кнопку "Сгенерировать API" (или как бы она там не называлась), генерируется также что то позволяющее настроить backend интерфейс, т.е. создать нужные менюшки, странички, контроллеры которые будут странички обрабатывать и т.д. Ну вобщем суть таже - кодогенерация, но только чуть более в развитом виде в применении к backend интерфейсу...
-
banshee
23 Март 2010 20:16:04 (ссылка)> Так вот в нем отображается список разделов, в которых есть товары. У разделов есть подразделы, у подразделов еще подразделы и т.д.
> Так вот построение одного этого списка занимало около минуты. А все из-за неоптимального хранения данных. Спасало только кеширование
А у вас там что, использовался CIBlockSection::GetList с включенным подсчётом количества элементов в разделах? Если да, то это по-другому надо делать, через запрос кол-ва элементов с группировкой по разделам. Работает примерно на два порядка быстрее.
-
sasha84
23 Март 2010 21:57:46 (ссылка)2 web master
Я потом тоже подумал, что вы что-то подобное имеете ввиду
Я поддерживаю ваше предложение. Единственное, это уже совсем не битрикс и, чтобы это реализовать им, действительно, придется все начать с нуля.
Даже можно поменять название, потому что это чистой воды фреймворк, практически не имеющий отношения к текущему битриксу.
Во всяком случае те пхпшные фреймворки, с которыми мне приходилось работать, примерно такую идею и реализуют.> А у вас там что, использовался CIBlockSection::GetList с включенным подсчётом количества элементов в разделах? Если да, то это по-другому надо делать, через запрос кол-ва элементов с группировкой по разделам. Работает примерно на два порядка быстрее.
Честно, не помню уже таких деталей, но поверьте люди, которые трудились на этим магазином, были с прекрасным опытом программирования именно под битрикс.
Мы прекрасно знали, что работает в битриксе быстрее, что медленнее, кроме того знали ряд способов, которые могут ускорить этот движок.
Мы реально уперлись в его неполноценность. -
web master
23 Март 2010 22:22:57 (ссылка)> Даже можно поменять название, потому что это
> чистой воды фреймворк,
> практически не имеющий отношения к текущему
> битриксу.был момент когда можно было переписать Битрикс под PHP5... только вместо этого руководство Битрикса посчитало что целесообразнее потратить ресурсы на переписывание ошибок Битрикса под .NET... было много копий сломано по этому поводу... но это уже другая история...
-
banshee
23 Март 2010 23:17:55 (ссылка)> Честно, не помню уже таких деталей, но поверьте люди, которые трудились на этим магазином, были с прекрасным опытом программирования именно под битрикс.
> Мы прекрасно знали, что работает в битриксе быстрее, что медленнее, кроме того знали ряд способов, которые могут ускорить этот движок.
Мы реально уперлись в его неполноценность.Хм. Тогда мы реально упираемся в заочное меряние пиписьками. Может быть, ваши бойцы знали, как ускорить запрос, может быть, нет. Может быть, я описываю способ, который бы вам подошёл, может быть, нет. Ладно, если что -- моя пиписька -- 26 сантиметров
-
banshee
23 Март 2010 23:20:45 (ссылка)> был момент когда можно было переписать Битрикс под PHP5… только вместо этого руководство Битрикса посчитало что целесообразнее потратить ресурсы на переписывание ошибок Битрикса под .NET…
Некоторые новые фичи битрикса работают только под PHP5, а что толку-то? Лучше бы его под MySQL 5 переписали, с подзапросами. Там есть, где оптимизировать.
-
web master
24 Март 2010 18:32:34 (ссылка)> Некоторые новые фичи битрикса работают только
> под PHP5, а что толку-то?я имел в виду переписать битрикс с нуля весь с использованием новых подходов и технологий:
- pattern'ов проективрования (дабы облегчить понимание кода другими программистами)
- unittest'ов (дабы позволить программистам проверить работоспособность *весь* API системы на новых хостингах сразу, а не спустя какое то время, когда обнаруживается что что то не работает, а уже поздно... да и для собственных внутренних нужд разработчиков Битрикса тоже не помешало бы)
- все спроектировать на объектах, а не на псевдо объектах, используемых сейчас просто как контейнеры функций
и т.д.
Т.е. создать новое архитектурное решение следуя всем современным тенденциям, а не громоздить код на том что было спроектировано в 2002 году когда едва то вышел PHP4 сменив PHP3...
> Лучше бы его под MySQL 5 переписали, с
> подзапросами.ну в том числе и это...
Т.е. резюмируя вышесказанное - по моему пришло время спроектировать Битрикс заново и переписать его, а не дублировать устаревший код на новой платформе .Net
-
-
Pablo Monteagudo
24 Март 2010 19:22:44 (ссылка)Могу сказать свое мнение человека, никогда не работавшего с Битриксом.
Я не против использования различных CMS, в том числе и Битрикса, наоборот. Но реализуя функционал сайта с помощью АПИ Битрикса новичек не видит, что за ним скрывается, он оперирует более крупными объектами, которые используются только в данной системе. У кажого ли хватит знаний и желания разобраться, что происходит внутри? Вряд ли, особенно когда горят сроки текущего проекта, а на подходе следующий.
И знающие люди это понимают. Например человек, который долго имел дело только с Битриксом, будет выглядеть хуже в глазах работодателя по сравнению с другими претендентами. Знакомый, недавно искавший работу программистом после пары лет разработки на Битриксе, рассказывал, что когда видели его последнее место работы, то относились к этому негативно.
P.S. В беседах с людьми, имевшими опыт работы с "битриксоидами", при затрагивании этой темы на их лицах всегда появлялась полусочувственная-полупрезрительная улыбка.
-
sasha84
27 Март 2010 16:13:26 (ссылка)> Хм. Тогда мы реально упираемся в заочное меряние пиписьками. Может быть, ваши бойцы знали, как ускорить запрос, может быть, нет. Может быть, я описываю способ, который бы вам подошёл,
Вы заочно решаете, что знаете больше, чем другие.
Даже предполагаете какую именно ошибку допустили, не зная самой сути задачи и не зная как ее решали.> Т.е. резюмируя вышесказанное – по моему пришло время спроектировать Битрикс заново и переписать его, а не дублировать устаревший код на новой платформе .Net
Думаете они пойдут на это? Как мне видится, они сейчас заняты тем, что выжимают все соки по максимуму из своего движка. -
web master
28 Март 2010 05:14:40 (ссылка)> Думаете они пойдут на это? Как мне видится,
> они сейчас заняты тем, что выжимают все соки
> по максимуму из своего движка.да уже выжимать особо не из чего...
как правило при решении проблемы производительности возможны два пути:
1) модернизировать архитектуру системы (интенсивный путь), начать использовать новые технологии и подходы... короче говоря перепроектировать основы системы используя современные тенденции
2) и второй путь (экстенсивный путь) - просто начать прикрывать недостатки архитектуры различными заплатками кэширования...
Второй вариант имеет как плюсы:
1) Он дешевый
2) Дающий максимальный эффект в кратчайшие срокиТак и серьезные минусы:
1) Увеличивается связность кода, он становится сложнее и его поддержка и понимание становятся проблематичнее.
2) Корень проблемы так и остается нерешенным. Что закладывает временную бомбу под систему и ограничивает ее возможности к развитию в будущем.Каждый бизнесмен выбирает свой вариант исходя из бизнес ситуации. Иногда имеет смысл выбрать второй вариант, но только когда у вас есть определенные ограничения по времени и ресурсам. В случае с Битриксом таких ограничений уже давно нет. Компания имеет хороший финансовый жирок и хороших программистов.
Мое мнение таково что для Битрикса выбирать второй вариант как долговременное решение это очень серьезная стратегическая ошибка. У Битрикса есть и время и ресурсы пойти по первому пути, но для этого надо признать и увидеть что система имеет серьезные архитектурные недостатки, а вот с этим у Битрикса серьезные проблемы, чрезмерно раздутое самомнение (и зачастую беспричинно раздутое) никогда не позволит признать такие вещи полностью.
Вобщем Битрикс может сколь угодно долго кэшировать все и вся, но рано или поздно они осознают что уперлись в стену порожденную архитектурными недостатками системы. И чем больше пройдет времени тем выше эта стена будет.
Я не думаю что руководство Битрикса настолько недальновидно, что не понимает этого. Рано или поздно они начнут серьезную модернизацию системы. Может и не станут все переписывать с нуля, но уверен они поймут что развиваться "вглубь", а не только "вширь" тоже иногда нужно. Уверен что они что нибудь придумают.
-
partner
28 Март 2010 13:30:38 (ссылка)Добрый день. Очень познавательная дискуссия. Если можно дайте мне ответ (или рекомендацию) на вопрос. Мы с командой начинаем большой проект. Это социальный проект для одной из деноминаций, т.е. для верующих людей. Идея в том, что в одном месте будут сосредоточены услуги: база адресов церквей по миру, блоги и личные страницы, медиатека (каждый зарегистрированный может загружать файлы), форум, интернет-магазин... всё это многоязычное. Возможно и многосайтовость, но всё связано. Естественно со временем посещаемость вырастит.
Нам посоветовали Битрикс. Сейчас идёт разработка техзадания.
Если можно поделитесь мыслями... какую цмс вы бы предпочли, есть ли смысл работать далее с Битриксом и т.д.
С уважением...
-
-
-
partner
29 Март 2010 10:08:06 (ссылка), благодарю за ответ.
Конечно ориентация именно на студию правильна. Я просто хотел узнать существует ли альтернатива Битриксу в плане возможностей. Но ваш ответ "в пользу Битрикса" меня удовлетворил. В смысле штатных средств, предсказуемости, обновляемости и независимости от разработчика.Интересно было бы узнать каковы возможности того же Битрикса в плане работы под "нагрузкой". Например, какое максимальное количество посетителей не критично? Когда тормоза ещё терпимы...
Спасибо -
igor_kip
29 Март 2010 15:23:41 (ссылка)Здравствуйте!
Подскажите, плиз, свое мнение про вот такую задачу.Собираемся сделать (заказать!) портал строительной направленности.
Есть стандартная наборка требований
зарегистрированные пользователи
биллинг
статистика
каталог продавцов
каталог товаров
каталог брендов (производителей)
статьи
новости
спецпредложения
выставки
энциклопедия понятий
и т.д.
пример такого направления - старезный http://www.stroyportal.ru/хотелось бы сделать портал с улучшенным "навороченным" поиском по нескольким критериям с учетом откуда посетитель приходит (гео)
собственно этим и выделиться
оптимистичный прогноз ниши - до 10000 посетителей в сутки в идеалеРазработчики предлагают делать на битриксе.
Как такое направление согласуется с возможностями битрикса? -
Chip
29 Март 2010 17:11:42 (ссылка)Самый главный вопрос ответе для себя - если вы Программисты зачем вам чья-то кмс, если все что нужно можете себе написать за пару дней.
Вы тут обсуждаете как юзеры.
Эти кмсы для меня на пару дней, притом результат с намного большей скоростью и эффективностью.
Может кто видел раньше shopsclub.ru вот вам сайтец с 16млн материалами на компе 600 селерона.
А сколько раз приходилось у людей сносить вордпресы которые тупо и банально ТОРМОЗЯТ.
От той структуры таблиц - как такой продукт может быть настолько популярен? Это только для мини сайтов с мини посетителями и хозяином юзером 2 степени.Если вы программеры - НЕ ТЕ вопросы обсуждаете.
Лучше бы в предыдущей теме задали вопросы типа:
-а где асинхронные сокет коннеты по разным устройствам (ип адресам) с использование ссл и прокси с ошибками разрыва и т.д. -
sasha84
29 Март 2010 22:57:13 (ссылка)2 igor_kip, partner
Плюсы:
- Все, что вы хотите от сайта, реализовано в битриксе
- Вам придется нанимать битриксоидов, они стоят недорого.
- Удобная админка, хотя многие с этим не согласны
Минусы:
- Битрикс платный и стоит не мало.
- Высокие требования к оборудованию
- Если сайт будет развиваться и наполняться новым функционалом, который нужен конкретно под ваши задачи, то рано или поздно придется платить за универсальность, упретесь в неповоротливость движка.
- Тормоза, которые не заметны по началу, т.к. есть инструменты их обхода. Но как только отойдете от стандартных возможностей битрикса, то вы это почувствуете.
- Не так просто найти хорошего программиста, который займется программированием под битрикс. В среде программистов это не котируется.
- Некоторые новые технологии не получится использовать в связке с битриксом, пока их разработчики не выпустят новую версию с ее поддержкой.2 igor_kip
Поиск в битриксе реализован неплохо, но есть другие технологии, которые справляются с поиском гораздо лучше.
При правильной настройке битрикс выдерживает 10000 посетителей в сутки.
Единственное, вам с биллингом придется повозиться. Год назад, по крайней мере, в битриксе его не было. Приходилось всячески изощряться, чтобы его поставить.Это мое мнение. Смотрите, что вам больше всего подходит. Все же в вашем случае (на сколько я понял вы не программист), если денег не жалко, можно и битрикс попробовать. В вашем сайте ничего такого сложного нет, программисту работы там не много будет. Да, и ищите заядлого битриксоида, он вам недорого обойдется, а сайт поставит.
Но если бы передо мной поставили задачу разработать сайт, я бы битрикс никогда не использовал, есть и другие инструменты для быстрого создания сайта. Они бесплатны, более гибки и производительность на порядок будет выше.>> Если вы программеры – НЕ ТЕ вопросы обсуждаете.
Меня лично добивает засилье битрикса, проработав на нем, написал статью, где постарался открыть глаза тем, кто выбирает битрикс.
Из-за того, что существует много сторонников битрикса, это обсуждение и возникло. Кто-то с мнением, изложенным в статье согласен, кто-то нет => обсуждение. -
banshee
29 Март 2010 23:37:35 (ссылка)> Интересно было бы узнать каковы возможности того же Битрикса в плане работы под “нагрузкой”. Например, какое максимальное количество посетителей не критично? Когда тормоза ещё терпимы…
Это в первую очередь определяется хостингом. На какую посещаемость вы рассчитываете?
-
-
partner
30 Март 2010 02:04:45 (ссылка)to sasha84
Вы пишите, что "если бы передо мной поставили задачу разработать сайт, я бы битрикс никогда не использовал, есть и другие инструменты для быстрого создания сайта. Они бесплатны, более гибки и производительность на порядок будет выше"Если ресурс должен поддерживать одновременно форумы, многосайтовость, магазин, блоги пользователей, медиатеку... какие "инструменты" вы бы посоветовали? Благодарю
-
web master
30 Март 2010 06:21:29 (ссылка)> Какие нагрузки по вашему опыту Битрикс должен
> выдерживать, при лояльном хостинге и
> нормальных программистах? Спасибопри двух выделенных машинах (одна на PHP+Apache, вторая на базу)... если не сильно навороченный каталог размером около 20 000 товаров... ну думаю сильно навскидку такая конфигурация на Битриксе выдержит без сильного напряга около 100 000 хитов в сутки... что в среднем около 20 000 уникальных пользователей... скорость ответа сраничек в среднем будет около секунды... я исхожу из того что поиск будет использоваться активно, а он довольно ресурсоемкий в Битриксе, да и не оптимальные и медленные инфо блоки внесут свою лепту...
но это конечно "очень навскидку" т.к. факторов море... я беру наиболее часто встречающиюся ситуацию...
кстати не верьте сильно тестам по нагрузке Битрикса, фигня все это полная и пыль в глаза, т.к. тесты проводятся со 100% закэшированным контентом, а тут уже начинает играть роль не сама система и ее качество и оптимальность кода, а просто мощность серверов, читай - их спсобность быстро читать с диска и отдавать контент в поток...
> Если ресурс должен поддерживать одновременно
> форумы, многосайтовость, магазин, блоги
> пользователей, медиатеку… какие
> “инструменты” вы бы посоветовали? БлагодарюНа такой вопрос никто не даст вам точного ответа. Все сильно зависит от вашей уникальной ситуации. Если вы честно ответите на следующие вопросы:
- Сколько денег вы готовы вложить на начальном этапе до выпуска первой версии?
- Сколько в месяц вы готовы тратить на поддержание проекта (отдельно на хостинг и отдельно на зарплаты программистов)?
- В каком городе планируется вестись разработка (сильно влияет на зарплату)?
- Какая у вас команда программистов, какой у них уровень и опыт (сколько лет опыта как минимум)? Это ваши штатные программисты или нанятые разово только под реализацию проекта?
- Какой планируется объем каталога товаров?
- Какая пиковая посещаемость ожидается (10K, 30K, 100K посетителей в сутки)?
- Вам надо сразу все сервисы запустить или возможен поэтапный запуск проекта? Если поэтапный, то в течении какого периода времени вы ожидаете 100% реализацию всего нужного функционала?То исходя из этого и можно дать какой то более менее осмысленный ответ.
-
-
sasha84
31 Март 2010 00:14:43 (ссылка)> Если ресурс должен поддерживать одновременно форумы, многосайтовость, магазин, блоги пользователей, медиатеку… какие “инструменты” вы бы посоветовали? Благодарю
Я уже посоветовал битрикс в вашем случае. Если вы имеете ввиду что бы использовал я, то отвечу, что фреймворки.
Я пока работал с 2-мя - Zend Framework и symfony. Лично я бы использовал symfony, Zend Framework его постепенно догоняет, но пока еще symfony имеет больше преимуществ, на мой взгляд.
Отличие использования какого-либо фреймворка от битрикса - это, то, что многие вещи, которые уже есть в битриксе, придется делать самому, однако качество будет превосходить то, что сделано в битриксе, т.к. битрикс нацелен на универсальность, отсюда все его минусы.В общем, если у вас есть толковый программист, то он сделает все, что вам нужно без использования битрикса. Скорее всего разработка займет чуть больше времени, но мое мнение - это того стоит в итоге.
Смысл такой: фреймворки - это инструмент для быстрого создания сайтов под конкретные нужды. Битрикс - это готовый сайт с многочисленным функционалом под разные нужды. Отсюда все его беды.
Понимаете, вы покупаете кучу всякого ненужного вам функционала (нужна только часть), который влияет на работу (производительность), а когда вы используете только тот функционал, который вам действительно нужен для ваших задач, то испольуются только те ресурсы, которые необходимы конкретно для ваших потребностей.
-
web master
31 Март 2010 05:45:38 (ссылка)> Если вы имеете ввиду что бы использовал я,
> то отвечу, что фреймворки.
> Лично я бы использовал symfony, Zend Frameworkименно так я и написал в первой версии своего предыдущего сообщения... но в конечном итоге решил все же для начала задать уточняющие вопросы дабы дать более обдуманный совет...
вобщем я также полностью поддерживаю идею взять за основу framework и доработать остальное самим, взяв некоторые модули уже готовыми (уж как минимум форум)...
но опять же... совет не универсален и сильно зависит как от ситуации так и от самих программистов...
-
banshee
31 Март 2010 10:38:20 (ссылка)> при двух выделенных машинах (одна на PHP+Apache, вторая на базу)… если не сильно навороченный каталог размером около 20 000 товаров… ну думаю сильно навскидку такая конфигурация на Битриксе выдержит без сильного напряга около 100 000 хитов в сутки… что в среднем около 20 000 уникальных пользователей… скорость ответа сраничек в среднем будет около секунды… я исхожу из того что поиск будет использоваться активно, а он довольно ресурсоемкий в Битриксе, да и не оптимальные и медленные инфо блоки внесут свою лепту…
По своему опыту: крупный новостной сайт, ~180 тыс. новостей. Два сервера (apache+nginx и MySQL). Сервисы: ленты новостей, просмотр новостей, комментарии к новостям, поиск, ну и по мелочи (авторы и т.п.). Стабильно держит посещаемость в 250 тыс. хостов (не хитов) в день, время генерации страниц в среднем около 0.4 с.
В таблице словоформ для поиска более 50 млн. записей.
-
Константин
22 Апрель 2010 07:27:58 (ссылка)Я снова в обсуждении
Прочитал все с большим интересом. Возник дополнительный вопрос по архитектуре и ее не/правильности.
Рассматриваю свойства инфоблоков применительно к документообороту. При создании бизнес-процесса и заполнения его свойств эти свойства инфоблока легко выбираются из списка.
Как бы автор видел подобный функционал в случае, когда инфоблоки с общими свойствами не используются, а используются разные таблицы под разные свойства, причем эти свойства извлекаются из БД по _call (getUserJob() и тп) как было приведено выше.
Как бы вы решили задачу вывода списка свойств инфоблока в каком-то определенном месте для этого случая, например, в бизнес-процессе ?
-
-
sasha84
22 Апрель 2010 21:33:13 (ссылка)2 Константин
Честно говоря, не совсем понимаю суть вопроса. Повторюсь, я не работал с модулем "Бизнес-процессы" в битриксе, т.к. я отошел от этого движка, когда этого модуля еще не было.
>> Как бы вы решили задачу вывода списка свойств инфоблока в каком-то определенном месте для этого случая, например, в бизнес-процессе ?
Я бы просто делал выборку свойств. Если они хранятся в разных таблицах, то это, по понятным причинам, лучше, чем в общей таблице.
Или опишите подробнее в чем проблема?P.S. Но, в случае битрикса, могу сказать, что их кнопка "Хранить свойства в отдельной таблице" - это скорее уход от проблемы, заплатка, а не решение.
-
Константин
22 Апрель 2010 22:43:18 (ссылка)sasha84, при создании нового свойства в инфоблоке битрикс хранит об этом свойстве всю информацию - название, тип, одиночное/множественное и прочее
в случае, когда мы вручную создаем новые свойства, например, у товара - вес, мы, для автоматического построения списка свойств, должны будем это свойство где-то так же сохранить: можно вручную прописать в конфиге, можно в базу данных поместить параметры свойства, но в любом случае - я не очень хорошо понимаю автоматический вывод списка свойств товара - битрикс же в этом случае просто берет коллекцию свойств товара из таблицы свойств и вуаля - дает их в виде массива
вопрос заключается в том, как хранить свойства сущности для автоматической выборки? не получится ли в этом же случае Битрикс-2 ?
-
Константин
22 Апрель 2010 22:46:08 (ссылка)Продолжение - вопрос был задан для этого случая решения проблемы (описан выше):
3) По нажатию кнопки генерируются специальные файлы конфигурации (по сути это все что и делает кнопка “Сгенерировать API”). Эти файлы читает основной код инфоблоков и предоставляет соответствующий API (очевидно активно используя magic method’ы __call(), __get(), __set() и т.д.)
К примеру:
1) создаем таблицу
b_user
В ней поля:
– id (unique)
– email (unique)
– name
– gender
и т.д.
Эти поля в дальнейшем превратятся в свойства объекта user. И будут автоматически доступны для записи/чтения (см. pattern ActiveRecord).
Затем создается таблица скажем b_user_job где хранится информация о всех местах где юзер работал (связь один ко многим).Тут не описывается момент, где будут свойства инфоблока хранится
-
-
Константин
24 Апрель 2010 05:43:49 (ссылка)>> 250 000 хитов на кешированном содержимом – это немного
> Хостов, Константин, хостов.наверное, имеется в виду Компьютерра? там в среднем 70000 хитов (SIC!) в сутки и 30000 уников
в любом случае, говорю вам, 250 000 хитов, хостов - это немного для кешированного контента, коим является новостная лента
что касается моего вопроса и хранения жестко прописанных свойств таблицы (инфоблока) - их можно описывать в отдельной таблице и суммировать в массив с описанием динамических свойств инфоблока - таким образом мы получим полное описание таблицы или инфоблока
-
-
banshee
24 Апрель 2010 23:42:28 (ссылка)> наверное, имеется в виду Компьютерра? там в среднем 70000 хитов (SIC!) в сутки и 30000 уников
> в любом случае, говорю вам, 250 000 хитов, хостов – это немного для кешированного контента, коим является новостная лента
Нет, не Компьютерра. Что же до кеширования, то, помнится, на морде с десятками новостных лент времена жизни кешей лежали в интервале 120..300 секунд, поскольку новости добавляются регулярно и в большом количестве. Это не дефолтные 3600 секунд битрикса.
> если не секрет, у Битрикса есть должность пиарщика, ходящего по форумам и полемизирующего по негативным для Битрикса темам ?
Насколько я знаю, нет. И я не сотрудник "1С-Битрикс". Так, разработчик, который последние лет 5 делает сайты на битриксе.
-
banshee
24 Апрель 2010 23:59:38 (ссылка)> что касается моего вопроса и хранения жестко прописанных свойств таблицы (инфоблока) – их можно описывать в отдельной таблице и суммировать в массив с описанием динамических свойств инфоблока – таким образом мы получим полное описание таблицы или инфоблока
То есть, распространить на остальные модули битрикса тот же подход, который используется в модуле инфоблоков? Когда есть базовый набор свойств плюс произвольный набор свойств, включая множественные, которые добавляет разработчик, плюс автоматически формируемая страница редактирования плюс API для работы с добавляемыми свойствами?
Битриксы постарались это реализовать через так называемые пользовательские свойства, но получилось, прямо скажем, пока не очень. API очень скудное.
-
-
sasha84
25 Апрель 2010 15:10:46 (ссылка)>> вопрос заключается в том, как хранить свойства сущности для автоматической выборки? не получится ли в этом же случае Битрикс-2 ?
Я думаю, что самый правильный ответ на этот вопрос можете дать только вы.
Подберите самый подходящий вариант для вашей цмс, основываясь на производительности каждого из модулей, качестве и будущей поддержке кода, расширяемости системы и т.д.
Вообще, мое мнение, что любая цмс в погоне за универсальностью постепенно приближается к проблемам, которые испытывает битрикс.
>> если не секрет, у Битрикса есть должность пиарщика, ходящего по форумам и полемизирующего по негативным для Битрикса темам ?
Насчет такой должности в самом битриксе не знаю, но догадываюсь, что она есть, т.к. уж очень часто можно встретить на форумах людей, с пеной у рта доказывающих какая навороченная система этот битрикс.
Я также догадываюсь, что возможно есть какая-то договоренность с партнерами битрикса, т.к. неоднократно встречал на форумах высказывания людей, работающих в этих фирмах-партнерах.
-
Константин
27 Апрель 2010 08:10:51 (ссылка)Ребят, поскольку вы большие знатоки Битрикса. Подскажите, пожалуйста, идею (именно идею), реализованную в системе - как там делается выборка в массив данных инфоблока - интересно, как суммируется в массиве Заголовок, Анонс и динамические свойства.
-
sasha84
27 Апрель 2010 21:03:20 (ссылка)>> Ребят, поскольку вы большие знатоки Битрикса. Подскажите, пожалуйста, идею (именно идею), реализованную в системе – как там делается выборка в массив данных инфоблока – интересно, как суммируется в массиве Заголовок, Анонс и динамические свойства.
Такие свойства, как Заголовок, Анонс, хранятся в таблице b_iblock_element. Все свойства, созданные вручную, хранятся в таблице b_iblock_property, а значения свойств для конкретных элементов в таблице b_iblock_element_property.
Вот пример, взял из документации и слегка изменил:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
<? $arFilter = Array( "IBLOCK_ID"=>1, "ACTIVE"=>"Y" ); $res = CIBlockElement::GetList(Array("SORT"=>"ASC"), $arFilter, Array("DATE_ACTIVE_FROM", "PROPERTY_FORUM_TOPIC_ID")); while($ar_fields = $res->GetNext()) { print_r($ar_fields); } ?>
Выводом будет:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Array ( [DATE_ACTIVE_FROM] => 02.08.2008 [~DATE_ACTIVE_FROM] => 02.08.2008 [PROPERTY_FORUM_TOPIC_ID_VALUE] => 1 [~PROPERTY_FORUM_TOPIC_ID_VALUE] => 1 [SORT] => 500 [~SORT] => 500 [CNT] => 1 [~CNT] => 1 ) Array ( [DATE_ACTIVE_FROM] => 21.08.2008 [~DATE_ACTIVE_FROM] => 21.08.2008 [PROPERTY_FORUM_TOPIC_ID_VALUE] => 2 [~PROPERTY_FORUM_TOPIC_ID_VALUE] => 2 [SORT] => 500 [~SORT] => 500 [CNT] => 1 [~CNT] => 1 )В GetList в последнем параметре мы указали какие поля выбирать. Префикс "PROPERTY_" означает, что это свойство, созданное вручную через админку. Далее следует мнемонический код свойства, его админ задает при создании.
Битрикс при выполнении GetList строит запрос, в котором соединяет таблицы b_iblock_element, b_iblock_property, b_iblock_element_property.
Результат запроса будет следующего вида:1 2 3
DATE_ACTIVE_FROM | PROPERTY_FORUM_TOPIC_ID_VALUE | SORT | CNT 02.08.2008 | 1 | 500 | 1 21.08.2008 | 2 | 500 | 1
В результате запроса каждое поле - это название свойства. В случае со свойствами, созданными вручную, соответствующее поле представлено в виде PROPERTY_<мнемонический_код_свойства>_VALUE.
Ну и далее битрикс возвращает массив со значениями свойств. Ключами элементов массива являются названия полей (свойств).
Постарался объяснить, как можно проще, но есть еще куча нюансов.
-
-
Владислав
07 Июнь 2010 16:33:12 (ссылка)Привет всем!
Я работаю с Битрикс совсем недавно. До этого делал небольшие и средние проекты на самописных движках, в основе которых CodeIgniter, Kohana и свои разработки.
В основном, единственное, что меня смущает в Битриксе это производительность и "нелогичность" кода. Поясню про "нелогичность".В любом даже самом простом сайте есть определенный функционал, который хотелось бы реализовать в достаточно увесистом файле исходного кода. Иными словами, я люблю подход, когда крупные логические структурные единицы архитектуры проектируемой системы находятся в одном месте. Например, сейчас я пишу CRM для одной финансовой фирмы. В ней 10 типов пользователей, порядка 30 различных страниц с контентом и сервисами. Я организовал свой проект в Kohana так, что самые базовые функции, например, управление авторизацией, хранение данных аккаунтов, взаимодействие с бизнес-логикой представлено в 2 достаточно больших классах. Остальная часть, которая реализует фронтэнд сервера это тоже достаточно крупные скрипты (500-700 строк кода). В результате такого подхода код становится обозримым, необходимость в интеграционном тестировании минимальна, а логически единообразные блоки находятся в одном месте.
В Битриксе такое реализовать практически невозможно: структура файлов Битрикса огромна и нерациональна. Работать с 100 файлами длиной в 2 строки сложнее, чем с одним файлом в 200 строк.
Это что касается логики и того случая, когда стандартных модулей не хватает (такое тоже бывает, когда делаешь не интернет-магазин или корпоративный сайт).С точки зрения конечного пользователя, CMS Битрикс потрясающе доступна: по сути весь интерфейс разбит на 3 части (Контент, Сервисы, Настройки), вне зависимости от типа контента он редактируется единообразно. У меня есть опыт поддержки крупного информационного портала и я могу сказать, что поддержка портала от маленького сайта фирмы ничем не отличается принципиально в Битриксе. Мелкие правки же можно внести прямо в странице, находясь в режиме редактирования, что несказанно удобно.
Более подробно о производительности скажу через 3 месяца, когда закончится моя работа над социальной сетью на 1C:Битрикс.
В целом, для новичка самое то. Однако, неумение программировать и нежелание развиваться способны оставить новичка новичком навсегда.
Лично мне писать на Битрикс неинтересно. Тем более, что с каждым днём всё больше и больше знакомых, которые готовы вкладывать в нагруженные проекты с возможностями социальных сетей, Веб 2.0.
Вот нашёл интересную статью: http://hostinfo.ru/articles/web/rubric48/rubric55/rubric75/rubric77/bitrix/1155/
Не знаю откуда взяты цифры.
Существует утилита ab (Apache Benchmarking) предназначенная для тестирования производительности. В Apache 2 для Windows она идёт в комплекте с Apache'м.
Запускаем апач, идём в консоль: ab -n 500 -c 50 http://localhost/ > c:\localhost.log.txt
Итак, в файле c:\localhost.log.txt найдём:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
This is ApacheBench, Version 2.0.41-dev apache-2.0 Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright (c) 2006 The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Server Software: Apache/2.0.63 Server Hostname: localhost Server Port: 80 Document Path: / Document Length: 18110 bytes Concurrency Level: 50 Time taken for tests: 138.875000 seconds Complete requests: 500 Failed requests: 0 Write errors: 0 Total transferred: 9337000 bytes HTML transferred: 9055000 bytes Requests per second: 3.60 [#/sec] (mean) Time per request: 13887.500 [ms] (mean) Time per request: 277.750 [ms] (mean, across all concurrent requests) Transfer rate: 65.66 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 5.7 0 109 Processing: 3578 13534 3386.6 13218 24578 Waiting: 3562 13427 3389.8 13156 24390 Total: 3578 13535 3386.5 13218 24578 Percentage of the requests served within a certain time (ms) 50% 13218 66% 14703 75% 15609 80% 16218 90% 17984 95% 19437 98% 22062 99% 22921 100% 24578 (longest request)
О боже! 13-24 секунды на запрос?! Это Битрикс.
Для сравнения, нагруженный проект samara24.ru, работающий на PHP FPM за nginx в час пик отдаёт страницу за 20-70 мс! -
sasha84
07 Июнь 2010 20:19:34 (ссылка)Владислав,
не комментарий, а целая статья получилась
Полностью согласен со всем вышесказанным.
Только вот:
>> В целом, для новичка самое то. Однако, неумение программировать и нежелание развиваться способны оставить новичка новичком навсегда.Все-таки, мое убеждение в том, что на начальном этапе программисту с битриксом связываться нельзя ни в коем случае.
У него формируется совершенно иное мышление. Можно сказать, что программист будет писать на языке "Битрикс", у которого свои представления о вебе.Да, он может изучать в свободное время то, что ему никогда не даст Битрикс, но это все будет в теории, а не на практике. А теория без практики имеет свойство пропадать из памяти.
-
Владислав
08 Июнь 2010 01:21:57 (ссылка)Ну знаете ли, sasha84, у меня есть знакомый сисад, крутой сисад, просто яйца чака нориса, работает в финансовой фирме, содержит нехилое облако данных, FreeBSD и Windows Server для него как консервный нож. Но как он не мог мыслить абстракциями, так и сейчас пишет на csh и cmd без понимания того, что есть, например Perl (Python, Ruby) и PowerShell, а ещё занимательный мир регулярных выражений, REST-вебсервисов и прочих "убогих абстракций" над необозримыми системами. Любое развитие должно не расходится с потребностями. Каждый сам выбирает себе работу, жизненные приоритеты, зарплату и жену.
Тяга к программированию это тяга к Истине, стремление разобраться во всем глубоко и основательно, не потеряв по дороге прагматизм и вожделение к сданным проектам. Если её нет, то пиши хоть на Pure C блоги — просветления не достигнешь. Битрикс это своего рода Бейсик, только в управлении сайтами
Хотя когда ко мне подходит менеджер и говорит, что вот этот интернет-каталог надо кровь из носу запустить через 2 недели, я не задумываюсь верстаю страницы, разворачиваю Битрикс и начинаю лепить структуру сайта и нарезать шаблоны. И пусть я знаю, что всё функциональное "многообразие" Битрикса и модуля "Инфоблоки" не превосходит по возможностям, например CouchDb (документ-ориентированная такая БД), но делаю работу я для продажи, а не для философии. А Битрикс был выбран как раз за простую админку, от которой наши заказчики радуются и думают, что мы сделали им технологичный и хороший сайт (на самом деле обычный и с отвратной, громоздкой CMS).
Развиваться, участвовать в Open Source, делать хорошие продукты и общаться! Make code, no war!
))) -
Pablo Monteagudo
08 Июнь 2010 14:59:33 (ссылка)2 Владислав
>крутой сисад, просто яйца чака нориса
>без понимания того, что есть ... занимательный мир регулярных выражений
Как-то не вяжется с "крутым сисадом".>так и сейчас пишет на csh
Если сисадмин пишет не только элементарные команды, то он умеет на нем программировать. Да и сложно представить нормального админа, который не может писать хотя бы простейшие скрипты на баше.>Битрикс это своего рода Бейсик, только в управлении сайтами
В смысле? Если я правильно понял ассоциацию, бейсик - простой язык, на котором можно учиться азам программирования.
Если вы имеете ввиду битрикс для пользователей, что он является этаким бейсиком для них в мире CMS, то можно согласиться, поскольку он дружелюбен к пользователю. Но не думаю, что для того, чтобы разобраться с любой CMS потребуется много времени.
Если же вы имеете ввиду, что битрикс - бейсик для программистов в программировании (программировании CMS?), то здесь уже подробно писали, почему это не так.Про CouchDb.
Зачем сравнивать CMS и СУБД? Или я не понял вашей мысли. -
sasha84
08 Июнь 2010 15:11:41 (ссылка)Я, конечно, не навязываю никому свое мнение. Кто-то может с ним согласится, кто-то нет.
Конечно, дело каждого выбирать, что ему по душе.Просто в любой профессии нужно развиваться, а, если программист ограничивает себя только знаниями битрикса,
то он многое теряет в плане своего развития.Сисадмин не обязан обладать чисто программистскими знаниями, ему и без того есть куда развиваться,
а вот хороший программист должен разбираться в своем предмете от и до, ну или стремиться к этому.
Программируя под один битрикс, ты только узнаешь эту систему от и до.Я не против использования битрикса (в каких-то случаях, он будет как нельзя кстати, как и любая другая CMS), я против того,
как этот битрикс пытаются преподносить в последнее время и веб-студии, которые его используют, и разработчики этой CMS:
Битрикс - это супер система, программировать под битрикс - это круто.
Благодаря, такому маркетингу, закоренелые битриксоиды начинают считать себя гуру и ни к каким знаниям уже не стремяться. -
Денис С
09 Июнь 2010 19:57:25 (ссылка)Ну просто не могу я воздержаться в здешней полемике. Все мое сейчас делится на две части. Одна... та что в течение многих и многих месяцев писала вэб системы (здесь я умышленно не употребляю слово сайт) для провинциальных буржуев, всеми совоими частями за все доводы относительно недостатков Битрикса, поскольку много мозолей на пальцах от них. Другая же.. та что в течение многих и многих месяцев писала оные системы для точно таких-же буржуев но на Битрикс, просто не может промолчать. Поверьте, я все поробовал... от читого ПХП+ MYSQL через Zend и т.д. к Битрикс. В результате этого у меня сложилось четкое осознание того ДЛЯ ЧЕГО ЖЕ ВСЕ ТАКИ НУЖЕН БИТРИКС. Задумайтесь! Ваша дискуссия до боли в ушах напоминает негодование всех тех кто никак не мог понять... зачем нужны визуальные средства (как принято теперь говорить) рапид разработки приложений, начиная с VB, когда есть простой и понятный Macro Assembler с его вызовами функций API. О как они голосили о том что программисты напрочь забывают программирование, что ничего хорошего на этих средствах (в смысле так широко обсуждаемого здесь термина "производительность") не напишешь! И где все они оказались. Не желание идти в сторону прогресса неминуемо оставит вас с вашими низкоуровневыми подходами к разработке ПО на обочине с бутылкой пива за 14 рублей в потертом замшевом пиджаке. Подумайте... может уже пора начинать забывать о том как там все "внутри" организованно! Давайте двигаться к прогрессу в отношении организации информации, технологии производства и т.д. И в этом контексте не будет времени на написание даже небольших SQL с InnerJoin. Пусть Битриксоиды ломают голову над тем как им увеличить производительность своей АПИ! Даст бог у них это получится. Visual studio, знаете, тоже не с 2009 версии началось. Я ЗА ИДЕЮ! Я ЗА ПОПЫТКУ! И не ровен час когда, по аналогии с сегодняшнем днем и с забытым assemblerom мы забудем и о SQL и о PHP перейдя на новую ступень эволюции. Вслед за Кроманьонцами. P.S. Простите за возможную нелогичность.... ночь у меня на дворе.
-
sasha84
11 Июнь 2010 20:13:40 (ссылка)Интересное мнение. Возможно вы и правы.
Только вот, я думаю, что тут имеет место некоторая подмена понятий.Все-таки битрикс - это не средство разработки.
Средства разработки - это те же самые фреймворки, к примеру.
Раньше все мы программировали на чистом пхп, сейчас используем фреймворки. Вот пример эволюции программиста.Вы же, говоря об эволюции, приводите в пример битрикс. Да, тоже эволюция, но только не программиста, а домохозяйки.
Раньше она создавала сайты на народе, потом появился битрикс и теперь ее радости нет предела.Битрикс - это не инструмент для программиста, а цмс со своей специализированностью, т.е. для легкого построения стандартных сайтов. Если же надо сделать что-то, не заложенное в битриксе, все равно придется вызывать программиста.
Во фреймворках же нет таких границ. Битрикс просто так создан по архитектуре.Если изменить это, то получится тот же самый фреймворк.
-
banshee
12 Июнь 2010 00:16:54 (ссылка)> Все-таки, мое убеждение в том, что на начальном этапе программисту с битриксом связываться нельзя ни в коем случае.
Подтверждено Джоэлом Спольски:
* The Law of Leaky Abstractions - http://www.joelonsoftware.com/articles/LeakyAbstractions.html
* перевод на русский: Закон Дырявых Абстракций - http://russian.joelonsoftware.com/Articles/LeakyAbstractions.htmlКонечно, в веб-разработке труба пониже и дым пожиже, но правило действует и здесь: для того, чтобы успешно пользоваться средствами разработки высокого уровня, нужно знать низкий.
И это не только к битриксу относится.
-
banshee
12 Июнь 2010 00:47:11 (ссылка)> Не знаю откуда взяты цифры.
> Существует утилита ab (Apache Benchmarking) предназначенная для тестирования производительности. В Apache 2 для Windows она идёт в комплекте с Apache’м.
> Запускаем апач, идём в консоль: ab -n 500 -c 50 http://localhost/ > c:\localhost.log.txt
> ...
> О боже! 13-24 секунды на запрос?! Это Битрикс.
> Для сравнения, нагруженный проект samara24.ru, работающий на PHP FPM за nginx в час пик отдаёт страницу за 20-70 мс!Сравнили localhost с samara24.ru?
Если вы не понимаете, откуда взяты цифры, и не понимаете, почему нельзя мерить ж*пу с пальцем, то вот вам мой ab:
[code]ab -n 500 -c 50 http://samara24.ru/ > /tmp/log.txt[/code]
[code]
This is ApacheBench, Version 2.3
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking samara24.ru (be patient)
Server Software: nginx/0.7.62
Server Hostname: samara24.ru
Server Port: 80Document Path: /
Document Length: 147470 bytesConcurrency Level: 50
Time taken for tests: 285.059 seconds
Complete requests: 500
Failed requests: 438
(Connect: 0, Receive: 0, Length: 438, Exceptions: 0)
Write errors: 0
Total transferred: 73969305 bytes
HTML transferred: 73730805 bytes
Requests per second: 1.75 [#/sec] (mean)
Time per request: 28505.880 [ms] (mean)
Time per request: 570.118 [ms] (mean, across all concurrent requests)
Transfer rate: 253.41 [Kbytes/sec] receivedConnection Times (ms)
min mean[+/-sd] median max
Connect: 0 506 518.6 374 3058
Processing: 5476 27346 7219.4 27066 52541
Waiting: 889 7566 5554.6 5522 25038
Total: 5476 27852 7216.2 27721 52541Percentage of the requests served within a certain time (ms)
50% 27721
66% 29219
75% 30124
80% 31481
90% 38048
95% 41200
98% 44413
99% 50575
100% 52541 (longest request)
[/code]Поаккуратней с замерами. Для того, чтобы делать их адекватно, нужно некоторое знание матчасти.
-
banshee
12 Июнь 2010 01:09:05 (ссылка)> Вы же, говоря об эволюции, приводите в пример битрикс. Да, тоже эволюция, но только не программиста, а домохозяйки.
Раньше она создавала сайты на народе, потом появился битрикс и теперь ее радости нет предела.> Битрикс – это не инструмент для программиста, а цмс со своей специализированностью, т.е. для легкого построения стандартных сайтов. Если же надо сделать что-то, не заложенное в битриксе, все равно придется вызывать программиста.
Имхо это не совсем так.
"Раньше она создавала сайты на народе, потом появился битрикс..."
Потом появился Ucoz. И narod.ru, и ucoz -- примеры SaaS, software as a service, причём народ появился ещё в те времена, когда термин SaaS либо не существовал вообще, либо не был распространённым. Битрикс делает телодвижения в сторону SaaS, но пока не особо удачные.
"Если же надо сделать что-то, не заложенное в битриксе, все равно придется вызывать программиста."
Для того, чтобы сделать сайт на БУС (Битрикс: управление сайтом) почти всегда приходится звать интегратора (смотри 1С). Некоторые частные решения от битриксов -- скажем, типовой сайт 1С-франчайзи или корпоративный портал со штатным функционалом -- может запустить и настроить и неспециалист (человек, который не знает PHP, SQL, CSS, WTF и прочие TLA), но это касается только частных решений.
-
AntiSpamer
18 Июль 2010 01:21:12 (ссылка)bitrix - кувалда для клепания грубых и малоэффективных сайтов - однодневок, удобна только для пользователя в части админки, для программиста переход на битрекс подобен смерти, с течением времени мозг перестает работать вообще, система - отстой, настоящий профессионал web-интерфейсов даже не подумает использовать битрикс в своей работе. Зря столько старались, чтоб соорудить громоздскую , слабоадаптивную систему. Каждая задача должна решаться элегантно и красиво с помощью языков программирования, ООП и оптимизации алгоритмов и запросов, битрикс в этом отношении подобен грубой кирпичной кладке. Никому не советую ломать мозг с этой системой. Программист должен рашать задачи своей головой а не тормозными компонентами третьей фирмы, слабо адаптированными под текущие нужды. Мое резюме - лажа для любителей.
-
banshee
24 Июль 2010 03:24:28 (ссылка)AntiSpamer, большое спасибо за вашу диатрибу.
Лет через 5-10 вам будет стыдно за ваши слова, но из песни, увы, слова не выкинешь. А ваша песнь получилась образцовой. Тут и стремление к совершенству, и нонконформизм, и юношеская свежесть, и юношеский же максимализм.Действительно спасибо, и я не издеваюсь.
-
-


