Объясните, плиз, на пальцах механизм торможения Смарти

fisher

накатила суть
давайте вернемся к смарти.
>>пункт интересно, в какой момент он решает перекомпилировать
вот тут мне самому интересно потому что на нагруженных проектах я его не крутил и могу ошибаться - прошу прояснить знающих людей. значит, насколько я понимаю, есть режим перекомпиляции реалтайм, например я меняю код, но это конечно должно отключаться. то есть либо у меня перед апгрейдом кода всегда должна пройти компиляция, либо нам все удобно и об апдейтах заботится смарти, но тогда это именно наш случай.
 

alexhemp

Новичок
там все в мануале описано.

Грубо говоря - изменился шаблон - он при первом обращении перекомпилируется

Можно включить компиляцию при каждой операции - для отладки например ($force_compile = true), можно наоборот, отключить ее вовсе (тогда требуется скомпилировать заранее) - $complie_check = false;

-~{}~ 15.01.07 16:27:

Фанат

Тут подмена понятий - "ОБЪЕКТИВНОЙ РЕАЛЬНОСТИ" как такого не существует, только субъективная - отраженная в собственных ощущениях.

И то что "у всех сматри тормозит" - и есть предмет веры (ну или хочешь - заблуждения) - при чем ты сам об этом и написал в первом посте ("нет причин не верить" - твоя фраза).

Что меня всегда удивляет в жизни - то что на сложные, многоплановые вопросы люди хотят получить конкретные ответы.
 

fisher

накатила суть
ну вот это и есть ответ на вопрос "в какой момент он решает перекомпилировать". если вдруг такое может произойти на нагрузке - см третий пункт.
 

Найч

Алгоритмик :-)
на тему нагруженных проектов.
С пол-года назад проектировался блог (свой, писанный с нуля). Первое решение - прикрутить смарти. После написания версии, пригодной для тестов, эти самые тесты показали грустную картину. С force_compile = 0 - 60% времени уходили с момента вызова display до окончания работы этого метода. При этом ab (caching=1) показывал порядка 30 запросов/сек. Справедливости ради - машина AMD Athlon(tm) XP 1600+, eAccelerator on, php 5.1.6. Проект предполагал высокую нагрузку, поэтому смарти отодвинул, и написал свою обертку для шаблонов. Ничего лишнего. Ab родил 120 запросов/сек. По сути разница в коде шаблонов. Говнокод - таки да.
Но для небольших проектов - очень удобно. И быстро.
 

Alexandre

PHPПенсионер
>>пункт интересно, в какой момент он решает перекомпилировать
ИМХО, смарти начинает компиляцию, если нет соответствующего скомпилированного шалбона, или updatetime шаблона больше (изменен позже) updatetime скомпилированного шаблона.

-~{}~ 15.01.07 17:41:

60% времени уходили с момента вызова display до окончания работы этого метода.
очевидно, это время уходит на компиляцию. По идеи, скомпилированный шаблон должен показываться быстро.
 

Найч

Алгоритмик :-)
очевидно, это время уходит на компиляцию. По идеи, скомпилированный шаблон должен показываться быстро.
Ни разу не очевидно. force_compile = 0. При перекомпиляции временем работы до вызова display можно пренебречь ;)
Немного поясню, что я хотел сказать. Выполение шаблона смарти занимало 60% времени выполнения кода (100% - время от стартовой точки до начала вывода). Именно выполнение. А при включенном кеше (нет компиляции, нет выполнения) - я получал 30 в сек. Своя реализация кеширования (очень схожая со смарти) выдала в 4 раза больше. Но в это время входило еще константное время выполнения "логики" (все, что до шаблонизатора). Наглядная демонстрация лишних движений как в генерируемом шаблоне, так и в самом классе

-~{}~ 15.01.07 16:56:

смарти начинает компиляцию, если нет соответствующего скомпилированного шалбона, или updatetime шаблона больше (изменен позже) updatetime скомпилированного шаблона.
Конечно, еще и вложенные шаблоны учитываются
 

ПРЕВЕД

Новичок
smarty - типичный пример bloatware.
постоянно тормозит не единоразовая компиляция, а ее результат - уже упомянутый говнокод, обеспечивающий работу всяких конфигов, модификаторов и прочих бирюлек.
 

crocodile2u

http://vbolshov.org.ru
Автор оригинала: itprog
crocodile2u
замечания надо было на форум smarty сразу, там разработчики все реквесты читают и отвечают, разжевали бы почему так и может бы пофиксили
На форум смарти я об этом писал. Тот, кто мне отвечал, обещал ознакомиться с WACT и, возможно, принять меры по инклюдам и другим вопросам - но в новой версии смарти. А я, честно говоря, даже и не в курсе сейчас, вышла эта новая версия или нет.
 

WP

^_^
Это не бирюльки, а полезный функционал, и не из-за него вовсе.
 

Alexandre

PHPПенсионер
замечания надо было на форум smarty сразу, там разработчики все реквесты читают и отвечают, разжевали бы почему так и может бы пофиксили
бесполезно, у меня была проблема (баг) с кешированием в смарти, я писал на их форум, вопрос остался без ответа.
 
Сверху