Annotation of parser3/www/htdocs/auto.p, revision 1.22.8.2

1.22.8.1  paf         1: @USE
                      2: common/lib.p
                      3: common/layout.p
                      4: common/implode.p
                      5: date/dtf.p
                      6: mysql.p
1.22.8.2! paf         7: #rotabanner.p
1.22.8.1  paf         8: 
                      9: 
1.22.8.2! paf        10: ###########################################################################
1.22.8.1  paf        11: @auto[]
1.22.8.2! paf        12: $MAIN:pSQL[^mysql::init[$SQL.connect-string;
        !            13:        $.is_debug(1)
        !            14:        $.cache_dir[/../data/cache]
        !            15: ]]
1.22.8.1  paf        16: 
1.22.8.2! paf        17: ^detectBrowser[]
1.22.8.1  paf        18: 
                     19: # эта табличка нужна для очистки всякой фигни от ентитей/тегов
                     20: $repl[^table::create{a b
                     21: &nbsp^;         
                     22: &hellip^;      ...
                     23: &rdquo^;       "
                     24: &ldquo^;       "
                     25: &raquo^;       "
                     26: &laquo^;       "
                     27: &mdash^;       -
                     28: &ndash^;       -
                     29: &#8470^;       №
                     30: &bull^;         }]
                     31: 
1.22.8.2! paf        32: #end @auto[]
1.22.8.1  paf        33: 
                     34: 
                     35: 
1.22.8.2! paf        36: ###########################################################################
        !            37: @error404[]
        !            38: #$response:status[404]
1.22.8.1  paf        39: ^location[/404/]
                     40: #end @error404[]
                     41: 
                     42: 
                     43: 
1.22.8.2! paf        44: ###########################################################################
        !            45: @postprocess[body][repl]
        !            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]{
1.22.8.1  paf        50: &hellip^;      &#133^;
                     51: &rdquo^;       &#148^;
                     52: &ldquo^;       &#147^;
                     53: &mdash^;       &#151^;
                     54: &ndash^;       &#150^;
1.22.8.2! paf        55: &bull^;        &#149^;
        !            56: }]
        !            57:         $result[^result.replace[$repl]]
        !            58:     }
1.22.8.1  paf        59: 
1.22.8.2! paf        60:        ^rem{ *** это инициализация банеров *** }
        !            61: #      $banner[^rotabanner::init[название проекта;банер по умолчанию]]
1.22.8.1  paf        62:        ^rem{ *** обрабатываем [parser]код[/parser] *** }
                     63:        $result[^result.match[\[(parser)\](.+?)\[/\1\]][g]{^taint[as-is][^process{$match.2}]}]
1.22.8.2! paf        64: 
        !            65:        ^rem{ *** если отдаем страничку яндексу, то меняем &amp^; на &, а то у него крышу сносит *** }
        !            66:        ^if(^env:HTTP_USER_AGENT.match[yandex][i]){
        !            67:                $result[^result.match[&amp^;][g]{&}]
        !            68:        }
1.22.8.1  paf        69: }
                     70: 
1.22.8.2! paf        71: # получаем статистику по sql запросам
        !            72: ^getSQLStat[]
1.22.8.1  paf        73: 
1.22.8.2! paf        74: # вызываем rusage, который напишет в log столько страничка генерилась и сколько отожрала памяти
        !            75: #^rusage[]
1.22.8.1  paf        76: 
1.22.8.2! paf        77: #end @postprocess[]
1.22.8.1  paf        78: 
                     79: 
                     80: 
1.22.8.2! paf        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]
1.22.8.1  paf        87: }
1.22.8.2! paf        88: #end @rusage[]
1.22.8.1  paf        89: 
                     90: 
                     91: 
1.22.8.2! paf        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:        }
1.22.8.1  paf       108: }
1.22.8.2! paf       109: #end @getSQLStat[]
        !           110: 
        !           111: 
        !           112: 
        !           113: 

E-mail: