kostyl Я этого никогда не понимал, т.к. даже компилированных шаблонах необходимо проверять не изменился ли оригинал, что приводит к лишнему I/O, частенько народ даже не думает об этом и шаблоны проверяются каждый запрос - с десяток шаблонов приводит к 30 I/O операциям, современный SAS диск на 10к оборотов может выдержать порядка 200-250 I/O в секунду. Если на Linux это смягчается как кешем файловой системы, так и realpath кешем самого PHP, то на Windows это сразу убивает насмерть. И после этого народ удивляется, а почему тормозит (потому что гладиолус! © Уральские пельмени)? Но рано или поздно и кеши не выдерживают и всё начинает безбожно тормозить.
Psih, на виндосе нет файлового кеша? Сомневаюсь И кеши для fstat-ов всегда выдержат - ибо это первое, что кеширует операционка. Т.е. если это вдруг вылетело из кеша - значит память напрочь кончилась и тут уже пофиг - все-равно все сдохнет Кстати, и php фалйлы тоже stat-ятся Ужас, не какого тебе раздолья в структурировании классов Вообще, если уж такая беда с stat-ами, ставим на продакшене акселератор и отключаем проверку mtime. И проблема уходит... =)
MiksIr Не всё так гладко, как кажется Для того, что бы акселератор нормально работал нужно ещё правильно include path настроить и правильно инклюдить файлы. Проверял на собственном сервере, разница офигительная даже при том, что у меня XFS с её агресивной политикой кеширования. Это видно по strace. Писал об этом тут: http://php.ru/forum/viewtopic.php?t=12980
Ну ты же сам там говоришь, что это делается, если у акселератора stat включен =) а если его выключить? Конечно, статы по файловой системе неприятны... но это не то пугало, которое стоит боятся. В реальных системах не на этом будет время кушаться. Т.е. на hello world заметно будет... а на сложной логике - затеряется. Прохождение статами пути к файлу в общем довольно стандартная ситуация. Никто же не ругает за это апач, а он еще и .htaccess пытается искать.
MiksIr Вот как раз ошибаешься про Hello world. На нём разница фигня, потому что файл открыли и исполнили. А вот когда начинаются пляски с поиском по include path и относительным директориям - вот тут уже весело. Неправильно настроенный ZF в среднем тормозит на 30%. Мой сайт показал тот же результат, хотя там include всего 6 файлов делался. Попутно я убрал все _once, заменив на обычный require.
а как быть с картинками ? ?!. корень сайта\templates\season\spring\images вот там ресположены картинка корень сайта\templates\season\spring\ тут сам стиль если записать images/1_b00000.gif то картинка не показывается . а полный путь прописывать тоже не вариант нет ли какой нить переменной для вставки путя до шаблона ?
Пути указываются относительно корня сайта, так что если сайт в /home/var/username а картинки в /home/var/username/images/xxx.jpg а темплейт тут: /home/var/username/templates/my_module/template.tpl То путь к картинке будет images/xxx.jpg в HTML
как при помощи такого шаблонизатора вывести дерево? $tee = array( ....'a', ....'b' ....array( ........'ca', ........'cb', ........'cc', ........array( ............'ea', ............'eb', ............'ec' ........); ....), 'd', 'e' );
я сейчас работаю в одной конторе, так там нет условий и циклов. Вернее есть, но они совмещены в блоки вместо Код (Text): [:loop a:] [:id:]-[:title:] [:/loop:] [:if a:] [:b:] [:/if:] будет Код (Text): [:sub a:] [:a.id:] - [:a.title:] [:a.b:] [:/sub:] в то же время в 1 случае мы сначала формируем массив, потом вызываем $tpl->l('a', $array); во 2-м же случае мы никакой массив не создаем, а вызываем в цикле $tpl->v('a.id', 'значение ИД'); если ни разу не укажем - блок не будет выведен, укажем 10 раз - блок будет 10 раз показан. Никаких массивов создавать не нужно. Переменные на лету подсоединяются. имхо 2 вариант тоже нужен. Пускай это будет немного другой метод, b к примеру. Так и в phpBB 2+ сделано
Я встречался с таким подходом в шаблонизаторе Blitz http://alexeyrybak.com/blitz/blitz_ru.html Имхо, подход совершенно иной и миксовать их не стоит. Не спорю, он чем-то лучше чем-то хуже, но это просто немного разные вещи.
Hi2all. Я тут первый раз и и это мой первый пост. Я на форуме долго искал конкретно, что мне нужно, но так и не нашел. Отдельную тему создавать нет смысла, она прямо или косо связана с текущей. имеется шаблон x.htm типа: HTML: [1]Вася[/1] [0]Петя[/0] Так вот мне надо чтоб в php скрипте функция PHP: $str=file_get_contents('x.htm'); $A=$function('[1]','[/1]',$str); // Чтоб $A равнялось 'Вася' $B=$function('[0]','[/0]',$str); // Чтоб $B равнялось 'Петя' Итак, что мне надо: нужна эта "волшебная" функция
PHP: <?php $html = " [1]PHP[/1] [2]JAVA[/2] [3]C++[/3] [4]Brainfuck[/5] [6] Asm [/6] "; preg_match_all('/\[(\d+)\](.*?)\[\/\1\]/s', $html, $m); print_r($m); ?> Код (Text): Array ( [0] => Array ( [0] => [1]PHP[/1] [1] => [2]JAVA[/2] [2] => [3]C++[/3] [3] => [6] Asm [/6] ) [1] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 6 ) [2] => Array ( [0] => PHP [1] => JAVA [2] => C++ [3] => Asm ) )
ок, спасибо, понял. меня интересовал больше такой вариант: PHP: <?php $html = " [asd] looool [/asd] "; preg_match_all("'\\[asd\\](.*?)\\[/asd\\]'si", $html, $m); print_r($m); ?> Код (Text): Array ( [0] => Array ( [0] => [asd] looool [/asd] ) [1] => Array ( [0] => looool ) )
Если честно, для меня это - простой набор символов, просто вычитал и методом тыка сформулировал свой вариант. Главное-работает. Но любопытство берет верх: дайте плиз ссылку на статью, разъясняющую этот "набор символов".
а хрен его знает - ищи в гугле. я с головы писал \[(.*?)\](.*?)\[\/\1\] \/, \[ и \] - это экранированные символы. тебе нужно [ и ], но так как они в regexp задействованы для интервалов и окончаний, приходится их экранировать . если убрать экранирование получится следующее: [1]2[/3] (.*?) - в данном случае это любая группа символов пока не встретится конец тега (.*?) - любая группа символов, пока не встретится закрывающий тег \1 - тот же текст, который был найден в первых круглых скобках, то есть в (.*?)
Доброго всем времени суток. Подскажите пожалуйста как в шаблон вставить Гуглокод банера на яваскрипте.... Не исполняется, а я не очень программист... :cry: Заранее спасибо.