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: &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: ###########################################################################
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^;      &#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: