Не так давно я представил набросок простейшего фреймворка, предназначеного для изучения новичками и для создания простейших сайтов. Комментарий, оставленный к тому посту уважаемым мною Иваном Броткиным, заинтриговал. Стало очень интересно, чего же можно добиться, если поднастроить ko3 на скорость работы. Интерес чисто академический, поэтому и настройки, по ходу дела, будут такие же. Единственное условие, которое я поставил для себя: фреймворк должен остаться полностью работоспособным, без ограничений!
Итак, начнем. Для начала, отключаем все, что можно: кеш, логирование, все доп.модули. Вывод из контролера в браузер делаем через echo, чтобы избежать использование доп. кода в самой кохане. Смотрим результат:
time: 0.0273728370667;
memory: 749360
Совсем-совсем не плохо, если сравнивать с ko3.2 и дефолтными настройками (напомню: time: 0.0946259498596; memory: 1330864). Но, данные параметры все-равно довольно высоки, поэтому идем дальше.
Тюнинг kohana 3.0 →
Давно хотел сравнить между собой обычные методы классов и статичные, но все руки не доходили. Сегодня вот столкнулся с приватным фреймворком, в котором ВСЕ методы и параметры статичные. Вообще все, т.е. нет ни одного обычного объекта! Откладывать сравнение было уже нельзя, чем я и занялся утром. Результаты неоднозначные, даже странные для меня, местами. В общем, «непоняно» что и как… На Ваш суд выношу результаты тестов, а Вы попробуйте мне объяснить почему результаты именно такие. Кстати, я не буду сравнивать размер используемой памяти, т.к. тут как-раз все понятно — статичные методы и свойства явно будут меньше кушать памяти. Это понятно.
Итак, начнем. Для начала, попробуем сравнить между собой «сферических конец в вакууме», т.е. классы-пустышки. Код у нас получится примерно такой:
<?php
class ClassStatic {
public static function test() {
;
}
}
class ClassDinamic {
public function test() {
;
}
}
$static = array();
$dinamic = array();
for ($count = 0; $count < 100; $count++) {
$start = microtime(TRUE);
for ($i = 0; $i <= 1000; $i++)
ClassStatic::test();
$static[$count] = microtime(TRUE) - $start;
$start = microtime(TRUE);
$obj = new ClassDinamic();
for ($i = 0; $i <= 1000; $i++)
$obj -> test();
$dinamic[$count] = microtime(TRUE) - $start;
}
echo 'Static: min - ' . min($static) . '; max - ' . max($static) . '; avg - ' . array_sum($static) / 100 . "<br />\n";
echo 'Dinamic: min - ' . min($dinamic) . '; max - ' . max($dinamic) . '; avg - ' . array_sum($dinamic) / 100 . "<br />\n";
Сравниваем классы в php →
Читайте, *** (цензура), список изменений, при смене версии фреймворка или языка программирования! Еще раз повторю — ЧИТАЙТЕ ВНИМАТЕЛЬНО! Именно из-за моей невнимательности я вчера потратил больше 4-х часов на отладку простейшего модуля системы (модуль flash-сообщений). Вдумайтесь — больше 4 часов жизни на десяток простейших строк приложения!
Расскажу подробнее… Все началось с того, что в новом проекте решил использовать свой модуль notify из предыдущих проектов, на которых он отлично работал. Используется он примерно так:
Notify::error('Сообщение об ошибке');
$this -> request -> redirect($url);
или так:
Notify::error('Сообщение об ошибке');
$this -> content = View::factory('page');
Если происходит редирект, notify сохраняет flash-сообщения в сессию и редиректит. Если происходит вывод страницы — выводит flash-сообщения и забывает про них. Достигается подобное использованием модуля Kohana-Dispatcher: проставляем запуск определенных событий в определенных местах приложения. Вот тут-то я и нарвался на неприятности…
Как убить время? Спросите меня =) →
Сегодня расскажу как интегрировать kohana 3.2 в wordpress. Тема для меня интересная, т.к. последний опыт написания скриптов на чистом php мне не понравился =). Вообще, в инете инфу на данную тематику найти тяжело. Либо все ссылаются на плагин Kohana-for-Wordpress, либо инфа очень старая и не подходит для WP3 или/и KO3.2.
Для начала, немного истории о том, как я искал всю эту инфу =). Первым шагом, конечно-же, был поиск. Первым пунктом в выдаче идет блог уважаемого мной программиста Саши Купреева. На странице, которую выдал Яндекс, подробное описание использования плагина Kohana-for-Wordpress, о котором я говорил выше. И в этом описании видно, что плагин тестировался для ko3.0 и wp2.8.4. Те, кто следит за развитием kohana или wordpress поймут, что версии настолько устарели, что вряд ли вообще этот плагин будет работать. Так же подумал и я, но решил проверить…
WordPress + Kohana →
Случайно нашел на винте скрипт генерации QR-кодов. Автор Павел Новицкий, если сайт к сожалению не работает (e-luge.net). Решил попрактиковаться в программировании без фреймворков.
Процесс получился достаточно не простой — отвык я с нуля и без ООП писать =). Результат разместил на этой странице, можете играться =).