Annotation of parser3/www/htdocs/auto.p, revision 1.24
1.23 paf 1: @USE
2: common/lib.p
3: common/layout.p
4: common/implode.p
5: date/dtf.p
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:
19: # эта табличка нужна для очистки всякой фигни от ентитей/тегов
20: $repl[^table::create{a b
21:  ^;
22: &hellip^; ...
23: &rdquo^; "
24: &ldquo^; "
25: »^; "
26: «^; "
27: &mdash^; -
28: &ndash^; -
29: №^; №
30: &bull^; }]
31:
32: #end @auto[]
33:
34:
35:
36: ###########################################################################
37: @error404[]
38: #$response:status[404]
39: ^location[/404/]
40: #end @error404[]
41:
42:
43:
44: ###########################################################################
1.24 ! paf 45: @postprocessZ[body][repl]
1.23 paf 46: $result[$body]
47: ^if(def $result && $result is "string"){
48: ^if($MAIN:browser eq "nn" && $MAIN:browser_ver < 5){
49: $repl[^table::create[nameless]{
50: &hellip^; …^;
51: &rdquo^; ”^;
52: &ldquo^; “^;
53: &mdash^; —^;
54: &ndash^; –^;
55: &bull^; •^;
56: }]
57: $result[^result.replace[$repl]]
58: }
59:
60: ^rem{ *** это инициализация банеров *** }
61: # $banner[^rotabanner::init[название проекта;банер по умолчанию]]
62: ^rem{ *** обрабатываем [parser]код[/parser] *** }
63: $result[^result.match[\[(parser)\](.+?)\[/\1\]][g]{^taint[as-is][^process{$match.2}]}]
64:
65: ^rem{ *** если отдаем страничку яндексу, то меняем &^; на &, а то у него крышу сносит *** }
66: ^if(^env:HTTP_USER_AGENT.match[yandex][i]){
67: $result[^result.match[&^;][g]{&}]
68: }
69: }
70:
71: # получаем статистику по sql запросам
72: ^getSQLStat[]
73:
74: # вызываем rusage, который напишет в log столько страничка генерилась и сколько отожрала памяти
75: #^rusage[]
76:
77: #end @postprocess[]
78:
79:
80:
81: ###########################################################################
82: @rusage[msg][now;s]
83: ^if(!in "/admin/"){
84: $now[^date::now[]]
85: $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]
86: ^s.save[append;/../data/rusage.log]
87: }
88: #end @rusage[]
89:
90:
91:
92: ###########################################################################
93: # этот метод выведет статистику, собранную объектом $MAIN:pSQL
94: @getSQLStat[]
95: ^if(def $MAIN:pSQL && !in "/admin/"){
96: ^if(def $form:mode && ^form:tables.mode.locate[field;debug]){
97: ^rem{ *** если пусканули с ?mode=debug то получаем и сохраняем информацию обо всех запросах на странице *** }
98: ^MAIN:pSQL.print_statistic[$.file[/../data/sql.txt]]
99: }{
100: ^rem{ *** а по умолчанию в лог пишем только информацию о проблемных страницах *** }
101: ^MAIN:pSQL.print_statistic[
102: $.file[/../data/sql.log]
103: $.debug_time_limit(500)
104: $.debug_queries_limit(25)
105: $.debug_result_limit(3000)
106: ]
107: }
108: }
109: #end @getSQLStat[]
110:
111:
112:
113:
E-mail: