Архив - только для чтения
Сообщество uCoz » Архивариус » Архив » условные операторы и системные коды (архив 27.02.2011)
условные операторы и системные коды
sch779
Сообщений: 703
Репутация: 348

Сообщение # 181 | 13:59:13
Quote (†RRZ@usp45†)
<?if($КОД$>5 || $КОД$=5)?>Текст<?endif?>

Вообще-то все намного проще:
Code
<?if($КОД$ >= 5)?>Текст<?endif?>
Андрей_ЗМТ
Сообщений: 4
Репутация: 4

Сообщение # 182 | 21:38:58
Здравствуйте!

Насколько я понимаю условные операторы исполняются на стороне сервера.

Вопрос: Насколько их использование грузит сервер и замедляет открытие страницы?

Например, я планирую использовать на сайте, в шаблонах:
- три конструкции - которые будут содержать по 30 условий;
- одна конструкция - 150 условий;
+ в каждом условии 800 знаков кода;

Насколько такое решение критично или сложно для исполнения?

sch779
Сообщений: 703
Репутация: 348

Сообщение # 183 | 01:05:33
Андрей_ЗМТ
Если условия простые типа сравнения чисел или поиск в строке небольшого размера, то такие условия обрабатываются быстро и сильно не загружают сервер. Как и не сильно влияют на время формирования исходного кода страницы, которая и будет отправлена в браузер.
Другое дело, если в условиях сплошь и рядом сложные конструкции поиска и вырезки из длинных кусков текста - тут даже проблема не в самом поиске нужного фрагмента в исходной строке (тем более, что на Юкозе используется искуственное ограничение максимальной длины поиска в строках), а в алгоритме получения этой строки!
К примеру, условие <?if($USER$='Alex')?> и условие <?if(strpos($MYINF_1$,'Alex') = -1)?>
Если $MYINF_1$ - это какой-либо информер, то сервер сначала выполнит кучу работы (сложность и продолжительность зависит от типа информера) по формированию информера и только после этого потратит всего лишь несколько миллисекунд на поиск запрошенной подстроки в сформированном коде!

Поэтому, еще раз - все зависит от самих условий - иногда одно условие так "нагрузит" сервер и задержит отправку готовой страницы, что хватит на несколько сотен простых условий!

Андрей_ЗМТ
Сообщений: 4
Репутация: 4

Сообщение # 184 | 02:03:55
sch779, спасибо за четкие разяснения. Я примерно так себе и представлял, но очень туманно. :-)

Условия у меня простые - в зависимости от того какой раздел или страница - показывать тот или иной HTML код.

Сообщение отредактировал Андрей_ЗМТ - Понедельник, 27 Дек 2010, 02:13:54
sch779
Сообщений: 703
Репутация: 348

Сообщение # 185 | 05:21:39
Quote (Андрей_ЗМТ)
показывать тот или иной HTML код.

Ну, тогда "тормозов" не должно быть - при формировании готового кода страницы она так или иначе составляется на сервере из различных блоков - и Ваши дополнительные условия не сильно затормозят этот процесс, а иногда даже ускорят его (если в результате срабатывания условия не будет генериться большой блок, особенно если его генерация связана с большой выборкой из базы данных Вашего сайта)!
olegsuv
Сообщений: 1365
Репутация: 127

Сообщение # 186 | 08:19:31
Quote (Андрей_ЗМТ)
sch779, спасибо за четкие разяснения. Я примерно так себе и представлял, но очень туманно. :-)

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

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


Любые работы по:
- Javascript, jQuery, HTML, CSS
- Верстке макетов и установке их на сайты
- Нестандартным решениям
YuriT
Сообщений: 231
Репутация: 701
Уровень замечаний:

Сообщение # 187 | 02:39:57
Quote (sch779)
К примеру, условие <?if($USER$='Alex')?> и условие <?if(strpos($MYINF_1$,'Alex') = -1)?>
Если $MYINF_1$ - это какой-либо информер, то сервер сначала выполнит кучу работы (сложность и продолжительность зависит от типа информера) по формированию информера и только после этого потратит всего лишь несколько миллисекунд на поиск запрошенной подстроки в сформированном коде!

Вообще-то это не так. Все информеры формируются не в момент генерации страницы, а заранее, отдельным периодическим процессом. А в момент генерации страницы они уже просто подставляются в шаблон как самая обычная строка. Так что в этом плане никакой разницы между поиском подстроки в информере и просто в какой-то длинной строке (скажем, в коде $FILTER1_MENU$) не будет.

Потеряшка - поиск потерянных и помощь бездомным животным в Питере
sch779
Сообщений: 703
Репутация: 348

Сообщение # 188 | 03:58:14
Quote (YuriT)
Вообще-то это не так

Согласен - информеры не совсем удачный пример в данном случае! Но основной смыл, думаю, понятен.

Кстати - как в шаблонах можно получить точное текущее время ДО СЕКУНДЫ? Или, лучше, таймштамп?
Переменная $TIME$ возвращает только часы и минуты. Отдельной переменной для секунд (по типу $HOUR$) нет! sad
Мне необходимо это именно в шаблоне!

Продвинутый
Сообщений: 113
Репутация: 12
Уровень замечаний:

Сообщение # 189 | 14:23:36
Подскажите, как прописать условие с $FILTER1$

У фильтра всего 2 значения. Нужна цепочка: Если 1-е значение, то .... иначе ... конец. Собственно вопрос как задаётся переменная для фильтра?

Также интересует вопрос с переменной $DATE$. Можно ли создавать условие типа, если месяц "январь-март", то... иначе ...конец. ?


Проверенный на все 100
Сообщение отредактировал Продвинутый - Вторник, 04 Янв 2011, 14:30:17
Victor
Сообщений: 1141
Репутация: 576

Сообщение # 190 | 16:06:20
Продвинутый, используйте конструкции substr и strpos (В ПУ есть описание работы с ними).
Например, условие: если день равен 29 будет выглядеть так: <?if(substr($DATE$,0,2)='29')?>...<?enidf?>
YuriT
Сообщений: 231
Репутация: 701
Уровень замечаний:

Сообщение # 191 | 17:01:57
Quote (Продвинутый)
Собственно вопрос как задаётся переменная для фильтра?

Смотря в каком шаблоне. Если на странице "материал и комментарии" - то там все просто, поскольку есть $FILTER1_VALUE$ . А если на страницах со списками материалов - то там все гораздо хуже. Там $FILTER1_VALUE$, к сожалению, уже нет, и текущее значение фильтра можно узнать, например, при помощи оператора STRPOS() по вхождению характерных подстрок с куском selected в переменную $FILTER1_MENU$, и для двух значений это вполне работает. А вот если значений фильтра сильно больше, то начинаются проблемы из-за того, что оператор STRPOS() анализирует только первые 1000 символов строки, а код $FILTER1_MENU$ получается длиннее.

Quote (Продвинутый)
Также интересует вопрос с переменной $DATE$. Можно ли создавать условие типа, если месяц "январь-март", то... иначе ...конец. ?

Опять же, смотря о каком шаблоне идет речь. Если о шаблоне страниц - то там для этого проще использовать переменную $MONTH$, с ней условие 'если месяц "январь-март"' будет просто <?if($MONTH$<4)?>

Потеряшка - поиск потерянных и помощь бездомным животным в Питере
Продвинутый
Сообщений: 113
Репутация: 12
Уровень замечаний:

Сообщение # 192 | 22:10:53
YuriT, речь идет об информере вывода фотографий по рейтингу для галереи.

$FILTER1$ принимает два значения "Город Юбилейный" и "Город Королёв"

Не подскажете, как будет выглядеть код?

Quote (YuriT)
то там для этого проще использовать переменную $MONTH$

в шаблоне информера есть только переменная $DATE$

Quote (uCoz-XPert)
Например, условие: если день равен 29 будет выглядеть так: <?if(substr($DATE$,0,2)='29')?>...<?enidf?>

Интересует именно задание интервала дат, а точнее месяцев. Я так понимаю, это реально толко с кодом $MONTH$, которого в шалоне информера галереи нету...


Проверенный на все 100
olegsuv
Сообщений: 1365
Репутация: 127

Сообщение # 193 | 00:57:33
Продвинутый, вывод вроде бы делается на $FILTER1_VALUE$. На выходе будет строка, условие напишите сами.

Любые работы по:
- Javascript, jQuery, HTML, CSS
- Верстке макетов и установке их на сайты
- Нестандартным решениям
YuriT
Сообщений: 231
Репутация: 701
Уровень замечаний:

Сообщение # 194 | 02:54:47
Продвинутый, в информерах эти коды выводят то же самое, что и коды $FILTER1_VALUE$ в "виде материалов", т.е. текст значения фильтра для данного материала.

Насчет месяца - условие можно написать точно так же, только вырезав сначала из даты нужный кусок:

<?if(substr($DATE,3,2)?>...

(это для случая, если формат дат в Общих настройках установлен на DD.MM.YYYYY)


Потеряшка - поиск потерянных и помощь бездомным животным в Питере
Сообщение отредактировал YuriT - Среда, 05 Янв 2011, 02:56:09
NeoGame12
Сообщений: 51
Репутация: 6

Сообщение # 195 | 12:25:38
появился сегодня один тугой вопрос с самым простым оператором, самое главное что он не заработал, вот он

<?if($USER$='$USERNAME$')?>Моя фотография<?else?>Фотография пользователя $USER$<?endif?>

почему правильно не работает? всегда выводит только Фотография пользователя $USER$

Сообщество uCoz » Архивариус » Архив » условные операторы и системные коды (архив 27.02.2011)
Поиск: