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

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: &nbsp^;         
        !            22: &hellip^;      ...
        !            23: &rdquo^;       "
        !            24: &ldquo^;       "
        !            25: &raquo^;       "
        !            26: &laquo^;       "
        !            27: &mdash^;       -
        !            28: &ndash^;       -
        !            29: &#8470^;       №
        !            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: ###########################################################################
        !            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]{
        !            50: &hellip^;      &#133^;
        !            51: &rdquo^;       &#148^;
        !            52: &ldquo^;       &#147^;
        !            53: &mdash^;       &#151^;
        !            54: &ndash^;       &#150^;
        !            55: &bull^;        &#149^;
        !            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{ *** если отдаем страничку яндексу, то меняем &amp^; на &, а то у него крышу сносит *** }
        !            66:        ^if(^env:HTTP_USER_AGENT.match[yandex][i]){
        !            67:                $result[^result.match[&amp^;][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: