это как пример был. хочешь расширить функциональность - пожалуйста. у меня в рабочей верссии можно черта в ступе передать.
Соеденил 2 статьи (Эту и webscript.ru/stories/03/04/11/6874707 ), мот кому и пригодиться для примера, новичкам... rapidshare.com/files/10783761/simple.rar
И все же как оценить скорость выполнения кода РНР? Например, какой из двух кодов будет быстрее: PHP: echo 'bla-bla-bla'; echo 'bla-bla-bla'; echo 'bla-bla-bla'; echo 'bla-bla-bla'; echo 'bla-bla-bla'; или PHP: $buffer = ''; $buffer .= 'bla-bla-bla'; $buffer .= 'bla-bla-bla'; $buffer .= 'bla-bla-bla'; $buffer .= 'bla-bla-bla'; $buffer .= 'bla-bla-bla'; echo $buffer; :roll:
440Hz вы тут сказали что юзаете сей принцип на практике, и сделали разбор GLOBALS универсальным... не кажется ли вам что лучше те переменные которые необходимо пускать в шаблон запихнуть в нечто вроде $GLOBALS['tpl'] и парсить уже GLOBALS['tpl']. Я делаю именно так. Хотелось бы услышать ваше мнение.
Действительно, проверил скорость вывода, разницы почти никакой. между выводами (то что писал выше). Текст в 5кб выводит за тысячные доли секунды. Но заметил интересную вещь. Совсем не понимаю, с чем связана. Если делаю вывод подобного кода: PHP: <?php $time_start = microtime(true); $buff = ''; $buff .= 'bla bla bla'; $buff .= 'bla bla bla'; $buff .= 'bla bla bla'; $buff .= 'bla bla bla'; $buff .= 'bla bla bla'; echo $buff; $time_end = microtime(true); $time = $time_end - $time_start; echo '<p>'.$time.'</p>'; ?> только размером в 5кб. Код повторяется несколько раз на странице и у каждого мерится время вывода, то соотношение этих времен, такое: 1й, 3й и 5й блок выводятся где-то за 2е-5 секунды, а 2й и 4й тде%то за 2е-4, т.е. в 10 раз дольше. Жал апдэйт много раз, цифры меняются, но соотношение сохраняется, т.е. четные выводы в 10 раз медленнее. К чему бы это? :roll: И я еще не до конца понял, в какой момент происходит передача кода сервером клиенту? Только когда РНР сформирует код страницы до конца или после каждого echo?
Не всё так просто господа, зависит от того, откуда и куда данные передаються. Если локально - то ясно, что это будет оочень быстро. Однако с буффером делать лучше, поскольку echo каждый раз заставляет отправить данные клиенту, тратя на это ресурсы процессора и сетевые ресурсы. Лучше отправить один раз, одним вызовом. К тому же учтите, что вывод не 5КБ обычно, и вызовы echo не происходят один за другим, а разбросаны по всем скриптам (я надеюсь мазахистов, пишуших один фаил на каждую отдельную страничку тут нету?)
Вот с чего надо было начинать, если говорим о буфферизации! Какая разница между буфферизацией и небуфферизацией. Да и то что удобно программисту, не обязательно удобно компилятору.
Попрошу Сибирь тут всуе не упоминать У Smarty своих заморочек хватает. Пользоваться им можно конечно, но... осторожно.
Знаете ли, при всей его крутости, до моих запросов он очень сильно не дотянул... Слишком медлителен и ограничен в некоторых возможностях а так же очень небрежен к кол-ву потребляемой оперативной памяти (до ужоса небрежен), а это очень плохо.
А поездку мне оплатите ? С командировочными ? (меня тут друзья сибиряки в баньку приглашают пивка попить, в страйкбол побегать, а у меня всё никак времени нет)
PHP сначала накапливает данные а буфер и после заполнения буфера отправляет данные клиенту. Тоесть идёт пакетная передача данных.
если программер и верстальщик это один человек, то удобно шаблоны выполнять ввиде классов PHP: class page { function show() { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <?$this->showHead()?> <?$this->showBody()?> </html> <? } // имхо, очень просто и очень удобно }
Я бы сказал что это даже немного извращённый вариант... У нас просто есть глобальный layout.htm где основной костяк, и в нём 3 вызова: <?=$parser->get('content_left')?> <?=$parser->get('content_center')?> <?=$parser->get('content_right')?> всё, никаких классов или тому подобного в шаблонах Всё накапливаеться в буфер и потом флушиться одним вызовом в браузер