15 сентября 2009 в 19:06

DooPHP — молодой и очень высокопроизводительный PHP фреймворк!

PHP*
DooPHP
Doo фреймворк — один из быстрейших, если не самый быстрый из доступных PHP фреймворков. Он помогает разработчикам на всех стадиях создания web 2.0 сайтов.
Вольный перевод вводного текста и диаграммы тестов производительности.

Немного истории


Наверно вы спрашиваете себя — зачем нужен ещё один PHP5 фреймворк? Ну… Я использовал и тестировал множество фреймворков основанных на MVC-паттерне последние несколько лет, такие как Ruby on Rails, CodeIgniter, CakePHP, Qcodo, Akelos, Fusephp, Qeephp, Recess и Yii. Возможно у меня проблемы, но мне никогда не нравилось, как другие фреймворки работают в каждодневном использовании. Да, я признаюсь, что мне нравится одна или две фичи в них, но я всегда стремился сделать что-то своё.
И вот, после 1–2 месяцев работы, я представляю вам DOOPHP. Это высокопроизводительный PHP фреймворк, основанный на MVC-паттерне, простой в использовании, без усложнения рабочего процесса или синтаксиса. Фреймворк Doo возможно самый быстрый из доступных фреймворков с открытым исходным кодом, вы можете ознакомиться с тестами произодительности (немного ниже) для сравнения. Фреймворк от 3 до 12 раз быстрее, чем другие!
DooPHP старается быть настолько лёгким, насколько возможно и использует минимальный объема кода. Например, URI роутер — всего 197 линий кода, однако он поддерживает авто-маршрутизацию, RESTful запросы, перенаправление, практически-идентичные-роуты, имена расширений и так далее (файл стал длинной в 421 линию после документирования)! В процессе разработки, я делал тесты возможных подходов при построении модуля и выбирал самые быстрые для Doo.
Помимо того, что DooPHP очень быстр, он так-же имеет достаточно много возможностей. DooPHP поддерживает некоторые библиотеки, часто используемые при разработке сайтов, такие как MVC-паттерн, RESTful API, REST-клиент, URI маршрутизацию, инструменты ORM для баз данных, генератор моделей, сжатую HTTP аутентификацию, гибкий и компилируемый шаблонизатор, логирование и профилирование, и многое другое.
DooPHP на 100% E_STRICT совместим и отлично работает в самых разнообразных средах. Он был протестирован на серверах Apache 2.x/1.x, Cherokee, lighttpd, в режиме CGI/FastCGI, а так-же используя Mod_php (на апаче). Он работает в операционных системах Windows и Linux.
DooPHP ничего не требует, кроме наличия PHP. Он хорошо работает на шаред-хостингах! (сайт разработчика размещён на шаред-хостинге, ввиду отсутствия средств)
DOOPHP значит Do OOP in PHP (Делай ООП в PHP), или иногда DOOOPINPHP.

Тесты производительности


Бенчмарк
Оригинальный тест echo 'Hello world'
Тест шаблонизатора Hello world с использованием шаблона
Тест базы данных Настройка DB, Doo: db ()→find ('User'); 88 найденных записей
Тест кэшированной конфигурации Файлы конфигурации кэшированны с помощью apc_store и запущены помощью скрипта deploy. Echo 'Hello World'
Тест блога DooPHP Тест производительности страницы блога на сайте DooPHP

Для честности, тесты были сделаны на одном компьютере, под одной операционной системой, сервером и PHP в режиме FastCGI.
  • Операционная система: Ubuntu Desktop 9.01
  • Веб-сервер: Cherokee web server 0.99.16
  • PHP: 5.2.9, режим FastCGI, все, не критичные расширения были отключены
  • CPU: Intel Dual 2 Core 2.8 Ghz
  • Оперативная память: 2GB DDR2 800Mhz
  • Жёсткий диск: 120GB 7200 RPM SATA HDD

Протестированы фреймворки последних версий на 12 Июля 2009 года, CodeIgniter 1.7.1, Yii 1.1 dev, CakePHP 1.2.3, QeePHP 2.1
Все тесты были проведены без кэширования данных. Каждый фреймворк был протестирован 10 раз и использованы средние результаты каждого теста. Значения RPS (запросов в секунду) были получены с использованием инструмента ApacheBench и командой «ab -t 30 -c 10 URL» (т.е. 10 уровень параллельности, исполнение теста 30 секунд).
И последнее, но достаточно важное замечание, DooPHP выпущен под новой BSD лицензией — это значит, что он бесплатен для личного или коммерческого использования.

К недостаткам можно отнести очень скромную документацию на данный момент, хотя есть полное описание API + в архиве с фреймворком поставляется несколько демо-проектов, которые вполне годятся для быстрого старта.

Если вышеперечисленные недостатки вас не смущают, а тесты производительности впечатлили — добро пожаловать на сайт doophp.com

Это мой первый пост, недолго пролежавший в песочнице — благодарствую приветливым хабрачеловекам за хабраинвайт!
И спасибо за карму, перенёс в тематический блог.
+35
74

комментарии (71)

+12
tigor, #
Посмотреть бы сравнение с KohanaPHP
+2
DarkPreacher, #
Сам не отказался бы, особенно в сравнении с неожиданно вышедшей бетой 2.4
+1
dohlik, #
Берем выше — сегодня утром финальная Kohana v3.0 вышла :)
+3
zaartix, #
и еще с симфонией
+27
JackFrost, #
у кого документация лучше — тот и круче!
–1
uaweb, #
В таком случае Codeigniter лидер :)
+6
emkill, #
… и только в документации
+1
ruFog, #
symfony? :)
0
AStek, #
будим тестировать…
+9
BaHbka, #
ещё бы тесты с Zend Framework'oм
+4
chill84, #
Еще один велосипед(тяжело вздыхая).
+2
nekt, #
не дуйтесь :)

Нас — велосипедистов — все равно не истребить :)
+12
dizzyman, #
Кстати, велосипеды тоже не стоят на месте, и что интересно, с каждым годом они все круче и круче.
Так может это к лучшему, что есть они — изобретатели велосипедов?


+2
AlexeyK, #
хорошая картинка, теперь буду ее использовать во всех темах с php :)
0
eLnino, #
А как же новые карбоновые велосипеды? = ) Так что и велосипеды до сих пор улучшают.
+3
remal, #
Какие есть другие достоинства, кроме производительности, которая мерилась на слишком идеальных задачах?

Про производительность: habrahabr.ru/blogs/php/22881/
–2
DarkPreacher, #
Вы видели, чтобы в каких-то фреймворках проводились более сложные тесты? «Здравствуй мир» — стандарт с которого все начинают =)
Можете заглянуть на сайт, там есть другие тесты, включая нагрузочный.
+15
remal, #
А код <? echo «Hello world»; еще быстрее. И что?

Сейчас популярно писать не hello world, а hello blog. Заодно и выполняются сравнительно типовые задачи. И мерить надо не скорость работы, а скорость написания и простоту поддержки.

Быстрее ваш фреймворк скорее всего из-за меньшего кол-ва функционала, меньшего кол-ва проверок и, возможно, преждевременной оптимизации.
+2
Freem, #
Откройте заявления производительности Yii, график не сходится… кто-то явно обманывает!
+2
Laughboy, #
«Операционная система: Ubuntu Desktop 9.01
Веб-сервер: Cherokee web server 0.99.16»
Хм… где б мне взять «Ubuntu Desktop 9.01»?
–1
DarkPreacher, #
Что вас смущает? На офф сайте убунты уже вполне доступна версия 9.04
0
Laughboy, #
Такой версии как 9.01 нет в природе :)
–1
DarkPreacher, #
Да, действительно, я не фанат убунты, но помню читал одну статью и там упоминалась версия 9.01, может речь шла о серверном варианте… Как на сайте оригинала написано — так и вставил, техническую информацию не правил =)
+2
ibnteo, #
Версии убунту означают дату выхода, год.месяц. Новые версии выходят каждые полгода, поэтому они именуются обычно как 8.10, 9.04, 9.10, угадайте, когда выйдет следующая :) Было исключение для 6.06, когда просто задержали на пару месяцев выпуск «долгоиграющей» версии.
0
DarkPreacher, #
Все обманывают =) Я не занимаюсь тестированием фреймворков, только профилированием своих собственных разработок. Разные условия проведения тестов, разные версии самих фреймворков, другая тестовая машина — что угодно может повлиять на тесты.
+2
jeje, #
Yii тут недавно драл всех фреймфорки и тут приходит Doo, который по графику в 4 раза его быстрее. Терзают меня сомнения.
+12
Razunter, #
Всё просто. Фреймворки бесконечны, производетельность бесконечна… В конце-концов сайты будут писать на асме (вемсте с серверами, бд и самими данными), и будут устраиваться конкурсы типа «4kb инет-магазин»…
–1
jeje, #
Первое предложение воспринял как пояснения, но потом просто улыбнуло :D
0
plandem, #
«4kb инет-магазины» — жесть :) ох, старые времена, помню участвовал в 128b демо на КанстракшнХаос :)

но 4кб магаз реально сильно :)))

НЛО прилетело и опубликовало эту надпись здесь
0
limp, #
доволен ООП в ZF, но…

имеем: ZF 1.8 +DB +ACL… — страница совсем не сложная

Информация от ZFDebug:
File Information
163 Files Included
Total Size: 1118.7K

без опкод кешера юзать чето ссыкотно
/me не может дождаться, когда ZF/Симфони реализуют (на С++ etc) экстеншеном к похапе
НЛО прилетело и опубликовало эту надпись здесь
0
limp, #
дело не в размере, а в кол-ве инклудов

>Вы Lazy initialization юзаете?
да
НЛО прилетело и опубликовало эту надпись здесь
0
limp, #
>Можно канеш запихать все в 3 файла
на продакшине так и есть

>но вы потом заибетесь искать.
для доработки etc есть дев версия, т.е. не собранная

странно что у зенда нет нейтив решения для такой «сборки»
0
limp, #
графики инклуда разных фреймворков (боян годичной давности)
blog.fedecarg.com/2008/08/04/php-applications-where-is-the-include-coming-from/

+мб кому пригодится
epic.codeutopia.net/pack/
НЛО прилетело и опубликовало эту надпись здесь
0
KELiON, #
не встречал кстати раньше… Интересно:)
У ZF получился самый «распределенный» график.
0
remal, #
А вы до сих пор без опкод кешера хоститесь? Где вы такой хостинг нашли? На многих нормальных хостингах кешеры уже давно поставлены.
0
limp, #
>А вы до сих пор без опкод кешера хоститесь?
отнюдь =)
«колокол» +APC наше все
0
remal, #
Тогда ~150 файлов инклуда не должно быть узким местом. Поэтому очень странно видеть подобный аргумент.
0
limp, #
это не _самое_ узкое место, но ~150 инклудов для базового функционала — это имхо много
0
PycmaM, #
Сайт и документация оставили приятные впечатления. Обязательно попробую что-нить сварганить на досуге.

Как легкий каркас, думаю, вполне сойдет (сам в основном использую symfony, но уж сильно тяжелая она, вместе с doctrine).
0
Silverstorm, #
Сайт бедный их еле движется что-то… Такой быстрый фреймворк?
+13
sylvio, #
Новый фреймворк — быстрый фреймворк.
Пройдет годик, обрастет полезными возможностями и тогда и нужна сравнивать
+2
JetHedgehog, #
Сайт впечатлил. Качественный подход.
0
striker_vlad, #
а дизайн сайта мне что-то напоминает…
0
striker_vlad, #
а… простите, я просто был на этом сайте ранее :)

по теме: пробежался взглядом по коду, написано неплохо, но очень много хардкода
–1
Alexion, #
поделка под Yii, тесты настораживают.
0
rosko, #
Для пущей объективности используйте не Yii 1.1 dev, который еще в бете, а последнюю версию вроде 1.0.9
+1
piumosso, #
А как в случае с DooPHP производительность кореллирует с функциональностью?
+1
hoodoy, #
М… Только мне показалось, что написано от имени создателя фреймворка, а автор им не является, на сколько я понимаю. И вообще, судя по сайту фреймворка, на перевод это похоже. Поправьте меня, если я не прав…
0
zvirusz, #
дык
Вольный перевод вводного текста и диаграммы тестов производительности.
0
hoodoy, #
хм… интересно, эта надпись сразу там была)))) ладн… виноват)
+1
sitehound, #
Молодые все резвые.
+2
runcore, #
в целом код понравился
но:
1) нет ничего готового для автоматизации построения и работы с формами
2) зачемто в каждом методе контроллера прописано $data['baseurl'] = Doo::conf()->APP_URL; почему бы не прописать это один раз у родителя, а при необходимости уже переопределять
3) используются компилируемые шаблоны, тоесть всегда есть дополнительные проверки на валидность файла-компиляции, следовательно в этом месте он проигрывает фреймворкам изначально построенным на нативных php шаблонах.

ну и еще есть места спорные… но это уже наверное IMHO
0
BisnoyZakat, #
Вы наверное не заметили, но там предлогается два вида шаблонов, нативные и компилируемые. Для этого есть два метода ( render и renderc ), последний как раз и есть нативный, хотите используете компилируемые шаблоны, хотите нативные. DooPHP в скорости просто по определению не может проигрывать в производительности, так как там все делалось только для того, чтобы быстро работала, это основной приоритет.
Я именно этот фреймворк выбрал за основу потому что нужно было высокопроизводительное решение =)
+2
hoodoy, #
Скачал и посмотрел, бегло. Прикол: автор фреймворка кичится краткостью кода, в контроле блога(демо-приложение) метод определят существования поста… 6(!!!!) строк. Надеюсь это просто неудачный пример.)
0
savamura, #
Ой, не обижайтесь, но, название у меня легко переиначилось в Doo Doo Framework.
0
Old_Chroft, #
Функционала пока маловато — для быстрого старта проекта пока не годится. А вот аккуратность при документировании кода впечатляет.
–1
LupineDreamer, #
Странно, что в сравнительных тестах не упоминается ни zend framework ни simfony…

Ну и как всегда производительность дается в ущерб функционалу.
0
kingoleg, #
Где сравнение с ZF?
0
zIs, #
Сам фреймворк оставил положительные впечатления. Документация подробная. За это плюс.
А это ваша личная разработка?
Знаете, неприятно видеть, когда российские разработчики не делают версию сайта на русском языке. У меня нет проблем с языком, просто мне кажется, что это как бы наплевательское отношение к своим и заискивание перед западом, что ли.
+1
zIs, #
Или автор статьи только переводчик? Если так, то вопрос снимается. Просто по статье однозначно непонятно, а ник автора статьи несколько похож на ник разработчика фреймворка :)
0
zIs, #
Да, похоже, переводчик. Автор статьи из Тулы, а автор DooPHP — Leng Sheng Hong, a 20 year-old self taught web designer & Flash developer in Malaysia. Тогда прошу прощения за наезд :)
0
habraname, #
> И вот, после 1–2 месяцев работы…
после, пардон, работы над чем?
0
egorinsk, #
Жалко ватор, что вы только перевел новость а не написали заодно обзор функций фреймворка, анализ качеств кода и прочее, в сравнении с каким нибудь другим фреймворком.
+2
dizzyman, #
Сейчас сравнил некоторые фреймворки — интересны были «накладные расходы» на запуск «Hello, World!».
Машина — Windows, Denwer, PHP 5.2.10, eAccelerator 2.5.3, так что не судим строго.

Без акселератора:

Kohana 2.4b — 0,1200 сек., 836,64 KB
Kohana 3.0rc3 — 0,1130 сек., 678,92 KB
Yii 1.09 — 0,0885 сек., 1 350,50 KB
DooPHP 1.2 — 0,0448 сек., 346,35 KB

С акселератором

Kohana 2.4b — 0,0626 сек., 220,23 KB
Kohana 3.0rc3 — 0,0660 сек., 202,22 KB
Yii 1.09 — 0,0185 сек., 344,34 KB
DooPHP 1.2 — 0,0079 сек., 90,57 KB
+1
ha2bj, #
линий, линию — строчек
+6
jetset, #
я вообще мимо проходил и не мог не заметить как красиво они украли один из моих логотипов!
У меня вот такой кит brand-berry.ru/img/brandberry-plasticwhale-logo.png
а они его красиво дублировали его и все.
0
xvoland, #
Круто :)
Это не хорошо. Если лого под кого-то делали, то свяжитесь с ними…
Что будете делать?
Требуйте вознаграждения!

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Никогда не отвлекай программиста!
Термоядерная энергетика: надежда человечества?
Как попасть в «золотой миллиард» или отрезвляющая статистика