Annotation of parser3/www/htdocs/auto.p, revision 1.25
1.23 paf 1: @USE
1.25 ! paf 2: lib.p
! 3: layout.p
! 4: implode.p
! 5: dtf.p
1.23 paf 6: mysql.p
7: #rotabanner.p
8:
9:
10: ###########################################################################
11: @auto[]
12: $MAIN:pSQL[^mysql::init[$SQL.connect-string;
13: $.is_debug(1)
14: $.cache_dir[/../data/cache]
15: ]]
16:
17: ^detectBrowser[]
18:
1.25 ! paf 19: # эта табличка нужна для очистки всякой фигни от ентитей/тегов
1.23 paf 20: $repl[^table::create{a b
21:  ^;
22: &hellip^; ...
1.25 ! paf 23: &rdquo^; ^taint["]
! 24: &ldquo^; ^taint["]
! 25: »^; ^taint["]
! 26: «^; ^taint["]
1.23 paf 27: &mdash^; -
28: &ndash^; -
1.25 ! paf 29: №^; №
1.23 paf 30: &bull^; }]
31:
1.25 ! paf 32: $SECTIONS[
! 33: $.banner_old[
! 34: $.image_path[/i/banners_old]
! 35: ]
! 36: $.banner[
! 37: $.image_path[/i/banners]
! 38: ]
! 39: ]
1.23 paf 40: #end @auto[]
41:
42:
43:
44: ###########################################################################
45: @error404[]
46: #$response:status[404]
47: ^location[/404/]
48: #end @error404[]
49:
50:
51:
52: ###########################################################################
1.25 ! paf 53: @postprocess[body][repl]
1.23 paf 54: $result[$body]
55: ^if(def $result && $result is "string"){
56: ^if($MAIN:browser eq "nn" && $MAIN:browser_ver < 5){
1.25 ! paf 57: $repl[^table::create{a b
1.23 paf 58: &hellip^; …^;
59: &rdquo^; ”^;
60: &ldquo^; “^;
61: &mdash^; —^;
62: &ndash^; –^;
1.25 ! paf 63: &bull^; •^;}]
1.23 paf 64: $result[^result.replace[$repl]]
65: }
66:
1.25 ! paf 67: ^rem{ *** это инициализация банеров *** }
! 68: # $banner[^rotabanner::init[название проекта;банер по умолчанию]]
! 69: ^rem{ *** обрабатываем [parser]код[/parser] *** }
! 70: # $result[^result.match[\[(parser)\](.+?)\[/\1\]][g]{^taint[as-is][^process{$match.2}]}]
! 71:
! 72: ^if(^result.pos[one-random]){
! 73: $result[^result.match[<(one-random)>(.+?)</\1>][g]{$_items[^match.2.match[<(random-item)>(.+?)</\1>][g]]^_items.offset(^math:random(^_items.count[]))$_items.2}]
! 74: }
1.23 paf 75:
1.25 ! paf 76: ^rem{ *** если отдаем страничку яндексу, то меняем &^; на &, а то у него крышу сносит *** }
1.23 paf 77: ^if(^env:HTTP_USER_AGENT.match[yandex][i]){
78: $result[^result.match[&^;][g]{&}]
79: }
1.25 ! paf 80:
! 81: $repl[^table::create{a b
! 82: <br></br> <br />
! 83: ></img> />
! 84: }]
! 85: $result[^if(${response:content-type.value} eq "text/html"){<?xml version="1.0" encoding="$response:charset"?>}^result.replace[$repl]]
1.23 paf 86: }
87:
1.25 ! paf 88: # получаем статистику по sql запросам
1.23 paf 89: ^getSQLStat[]
90:
1.25 ! paf 91: # вызываем rusage, который напишет в log столько страничка генерилась и сколько отожрала памяти
! 92: ^rusage[]
1.23 paf 93: #end @postprocess[]
94:
95:
96:
97: ###########################################################################
98: @rusage[msg][now;s]
1.25 ! paf 99: ^if(1 || !in "/admin/"){
1.23 paf 100: $now[^date::now[]]
101: $s[[^now.sql-string[]] $status:rusage.utime $status:rusage.maxrss [$status:memory.used/$status:memory.free/$status:memory.ever_allocated_since_compact/$status:memory.ever_allocated_since_start] $env:REMOTE_ADDR $request:uri^if(def $msg){ $msg}^#0A]
102: ^s.save[append;/../data/rusage.log]
103: }
104: #end @rusage[]
105:
106:
107:
108: ###########################################################################
1.25 ! paf 109: # этот метод выведет статистику, собранную объектом $MAIN:pSQL
1.23 paf 110: @getSQLStat[]
111: ^if(def $MAIN:pSQL && !in "/admin/"){
112: ^if(def $form:mode && ^form:tables.mode.locate[field;debug]){
1.25 ! paf 113: ^rem{ *** если пусканули с ?mode=debug то получаем и сохраняем информацию обо всех запросах на странице *** }
1.23 paf 114: ^MAIN:pSQL.print_statistic[$.file[/../data/sql.txt]]
115: }{
1.25 ! paf 116: ^rem{ *** а по умолчанию в лог пишем только информацию о проблемных страницах *** }
1.23 paf 117: ^MAIN:pSQL.print_statistic[
118: $.file[/../data/sql.log]
119: $.debug_time_limit(500)
120: $.debug_queries_limit(25)
121: $.debug_result_limit(3000)
122: ]
123: }
124: }
125: #end @getSQLStat[]
126:
127:
128:
129:
E-mail: