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