diff options
| author | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-11-27 10:35:11 +0000 |
|---|---|---|
| committer | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2007-11-27 10:35:11 +0000 |
| commit | 1bd6dc62e58531f845b82f6192f7eb009aea400f (patch) | |
| tree | 40ffcda3f1b6a7ad9b53e19a81ea47aa907d1e7e /frontends/php/include | |
| parent | 98ce4eb6a912de7878aa3632c8de0fecd22455c8 (diff) | |
- [NTT-66] merged rev. 5100:5102 of branches/1.4.j/ (Artem) [tuning performance for "Status of Triggers";changes in SCHEMA, index events_1 now: {object,objectid,eventid}]
git-svn-id: svn://svn.zabbix.com/trunk@5103 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/include')
| -rw-r--r-- | frontends/php/include/copt.lib.php | 329 | ||||
| -rw-r--r-- | frontends/php/include/db.inc.php | 4 | ||||
| -rw-r--r-- | frontends/php/include/events.inc.php | 32 | ||||
| -rw-r--r-- | frontends/php/include/triggers.inc.php | 18 |
4 files changed, 182 insertions, 201 deletions
diff --git a/frontends/php/include/copt.lib.php b/frontends/php/include/copt.lib.php index ec1cb294..ae0d97eb 100644 --- a/frontends/php/include/copt.lib.php +++ b/frontends/php/include/copt.lib.php @@ -86,20 +86,19 @@ ** Eugene Grigorjev (eugene.grigorjev@zabbix.com) **/ -// define("USE_PROFILING",1); - define("USE_VAR_MON",1); - define("USE_TIME_PROF",1); - define("USE_MEM_PROF",1); - define("USE_COUNTER_PROF",1); - define("USE_MENU_PROF",1); - //define("USE_MENU_DETAILS",1); - define("USE_SQLREQUEST_PROF",1); - //define("SHOW_SQLREQUEST_DETAILS",1); +//define("USE_PROFILING",1); +define("USE_VAR_MON",1); +define("USE_TIME_PROF",1); +define("USE_MEM_PROF",1); +define("USE_COUNTER_PROF",1); +define("USE_MENU_PROF",1); +//define("USE_MENU_DETAILS",1); +define("USE_SQLREQUEST_PROF",1); +//define("SHOW_SQLREQUEST_DETAILS",1); + +if(!defined('OBR')) define('OBR',"<br/>\n"); - if(!defined("OBR")) define("OBR","<br/>\n"); - -if(defined('USE_PROFILING')) -{ +if(defined('USE_PROFILING')){ $starttime=array(); $memorystamp=array(); $sqlrequests = defined('SHOW_SQLREQUEST_DETAILS') ? array() : 0; @@ -107,56 +106,51 @@ if(defined('USE_PROFILING')) $perf_counter = array(); $var_list = array(); - class COpt - { + class COpt{ /* protected static $starttime[]=array(); */ - - /* protected static */ function getmicrotime() { -if(defined('USE_TIME_PROF')) { - list($usec, $sec) = explode(' ',microtime()); return ((float)$usec + (float)$sec); -}else { - return 0; -} + /* protected */ static function getmicrotime() { + if(defined('USE_TIME_PROF')) { + list($usec, $sec) = explode(' ',microtime()); + return ((float)$usec + (float)$sec); + } + else { + return 0; + } } - /* public static */ function showmemoryusage($descr=null) - { -if(defined('USE_MEM_PROF')) { - $memory_usage = COpt::getmemoryusage(); - $memory_usage = $memory_usage.'b | '.($memory_usage>>10).'K | '.($memory_usage>>20).'M'; - SDI('PHP memory usage ['.$descr.'] '.$memory_usage); -} + /* public */ static function showmemoryusage($descr=null){ + if(defined('USE_MEM_PROF')) { + $memory_usage = COpt::getmemoryusage(); + $memory_usage = $memory_usage.'b | '.($memory_usage>>10).'K | '.($memory_usage>>20).'M'; + SDI('PHP memory usage ['.$descr.'] '.$memory_usage); + } } - /* protected static */ function getmemoryusage() { -if(defined('USE_MEM_PROF')) { - return memory_get_usage('memory_limit'); -} else { - return 0; -} + /* protected */ static function getmemoryusage() { + if(defined('USE_MEM_PROF')) { + return memory_get_usage('memory_limit'); + } else { + return 0; + } } - /* public static */ function counter_up($type=NULL) - { -if(defined('USE_COUNTER_PROF')) -{ - global $perf_counter; - global $starttime; + /* public */ static function counter_up($type=NULL){ + if(defined('USE_COUNTER_PROF')){ + global $perf_counter; + global $starttime; - foreach(array_keys($starttime) as $keys) - { - if(!isset($perf_counter[$keys][$type])) - $perf_counter[$keys][$type]=1; - else - $perf_counter[$keys][$type]++; + foreach(array_keys($starttime) as $keys){ + if(!isset($perf_counter[$keys][$type])) + $perf_counter[$keys][$type]=1; + else + $perf_counter[$keys][$type]++; + } } -} } - /* public static */ function profiling_start($type=NULL) - { + /* public */ static function profiling_start($type=NULL){ global $starttime; global $memorystamp; global $sqlmark; @@ -167,37 +161,33 @@ if(defined('USE_COUNTER_PROF')) $starttime[$type] = COpt::getmicrotime(); $memorystamp[$type] = COpt::getmemoryusage(); -if(defined('USE_VAR_MON')) -{ + if(defined('USE_VAR_MON')){ + $var_list[$type] = isset($GLOBALS) ? array_keys($GLOBALS) : array(); + } - $var_list[$type] = isset($GLOBALS) ? array_keys($GLOBALS) : array(); -} -if(defined('USE_SQLREQUEST_PROF')) -{ - if(defined('SHOW_SQLREQUEST_DETAILS')){ - $sqlmark[$type] = count($sqlrequests); - } - else { - $sqlmark[$type] = $sqlrequests; - } -} + if(defined('USE_SQLREQUEST_PROF')){ + if(defined('SHOW_SQLREQUEST_DETAILS')){ + $sqlmark[$type] = count($sqlrequests); + } + else{ + $sqlmark[$type] = $sqlrequests; + } + } } - /* public static */ function savesqlrequest($sql) - { -if(defined('USE_SQLREQUEST_PROF')) -{ - global $sqlrequests; - if(defined('SHOW_SQLREQUEST_DETAILS')){ - array_push($sqlrequests, $sql); - }else{ - $sqlrequests++; - } -} + /* public */ static function savesqlrequest($sql){ + if(defined('USE_SQLREQUEST_PROF')){ + global $sqlrequests; + if(defined('SHOW_SQLREQUEST_DETAILS')){ + array_push($sqlrequests, $sql); + } + else{ + $sqlrequests++; + } + } } - /* public static */ function profiling_stop($type=NULL) - { + /* public */ static function profiling_stop($type=NULL){ global $starttime; global $memorystamp; global $sqlrequests; @@ -211,126 +201,113 @@ if(defined('USE_SQLREQUEST_PROF')) if(is_null($type)) $type='global'; echo OBR; -if(defined('USE_TIME_PROF')) -{ - echo "(".$type.") Time to execute: ".round($endtime - $starttime[$type],6)." seconds!".OBR; -} -if(defined('USE_MEM_PROF')) -{ - echo "(".$type.") Memory limit : ".ini_get('memory_limit').OBR; - echo "(".$type.") Memory usage : ".mem2str($memorystamp[$type])." - ".mem2str($memory).OBR; - echo "(".$type.") Memory leak : ".mem2str($memory - $memorystamp[$type]).OBR; -} -if(defined('USE_VAR_MON')) -{ - $curr_var_list = isset($GLOBALS) ? array_keys($GLOBALS) : array(); - $var_diff = array_diff($curr_var_list, $var_list[$type]); - echo "(".$type.") Undeleted vars : ".count($var_diff)." ["; - print_r(implode(', ',$var_diff)); - echo "]".OBR; -} -if(defined('USE_COUNTER_PROF')) -{ - if(isset($perf_counter[$type])) - { - ksort($perf_counter[$type]); - foreach($perf_counter[$type] as $name => $value) - { - echo "(".$type.") Counter '".$name."' : ".$value.OBR; + if(defined('USE_TIME_PROF')){ + echo '('.$type.') Time to execute: '.round($endtime - $starttime[$type],6).' seconds!'.OBR; + } + + if(defined('USE_MEM_PROF')){ + echo '('.$type.') Memory limit : '.ini_get('memory_limit').OBR; + echo '('.$type.') Memory usage : '.mem2str($memorystamp[$type]).' - '.mem2str($memory).OBR; + echo '('.$type.') Memory leak : '.mem2str($memory - $memorystamp[$type]).OBR; + } + + if(defined('USE_VAR_MON')){ + $curr_var_list = isset($GLOBALS) ? array_keys($GLOBALS) : array(); + $var_diff = array_diff($curr_var_list, $var_list[$type]); + echo '('.$type.') Undeleted vars : '.count($var_diff).' ['; + print_r(implode(', ',$var_diff)); + echo ']'.OBR; + } + + if(defined('USE_COUNTER_PROF')){ + + if(isset($perf_counter[$type])){ + ksort($perf_counter[$type]); + foreach($perf_counter[$type] as $name => $value){ + echo '('.$type.') Counter "'.$name.'" : '.$value.OBR; + } } } -} -if(defined('USE_SQLREQUEST_PROF')) -{ - if(defined('SHOW_SQLREQUEST_DETAILS')) - { - $requests_cnt = count($sqlrequests); - echo "(".$type.") SQL requests count: ".($requests_cnt - $sqlmark[$type]).OBR; - for($i = $sqlmark[$type]; $i < $requests_cnt; $i++) - { - echo "(".$type.") SQL request : ".$sqlrequests[$i].OBR; + if(defined('USE_SQLREQUEST_PROF')){ + if(defined('SHOW_SQLREQUEST_DETAILS')){ + $requests_cnt = count($sqlrequests); + echo '('.$type.') SQL requests count: '.($requests_cnt - $sqlmark[$type]).OBR; + + for($i = $sqlmark[$type]; $i < $requests_cnt; $i++){ + echo '('.$type.') SQL request : '.$sqlrequests[$i].OBR; + } + } + else{ + echo '('.$type.') SQL requests count: '.($sqlrequests - $sqlmark[$type]).OBR; + } } - } - else - { - echo "(".$type.") SQL requests count: ".($sqlrequests - $sqlmark[$type]).OBR; - } -} } - /* public static */ function set_memory_limit($limit='8M') - { + /* public */ static function set_memory_limit($limit='8M'){ ini_set('memory_limit',$limit); } - /* public static */ function compare_files_with_menu($menu=null) - { -if(defined('USE_MENU_PROF')) -{ - $files_list = glob('*.php'); - - $result = array(); - foreach($files_list as $file) - { - $list = array(); - foreach($menu as $label=>$sub) - { - foreach($sub['pages'] as $sub_pages) - { - if(!isset($sub_pages["label"])) $sub_pages["label"]=$sub_pages['url']; - - $menu_path = $sub["label"].'->'.$sub_pages["label"]; - - if($sub_pages['url'] == $file) - { - array_push($list, $menu_path); - } - if(!in_array($sub_pages['url'], $files_list)) - $result['error'][$sub_pages['url']] = array($menu_path); - - if(isset($sub_pages['sub_pages'])) foreach($sub_pages['sub_pages'] as $page) - { - $menu_path = $sub["label"].'->'.$sub_pages["label"].'->sub_pages'; + /* public */ static function compare_files_with_menu($menu=null){ + if(defined('USE_MENU_PROF')){ + + $files_list = glob('*.php'); + + $result = array(); + foreach($files_list as $file){ + $list = array(); + foreach($menu as $label=>$sub){ + foreach($sub['pages'] as $sub_pages){ + if(empty($sub_pages)) continue; - if(!in_array($page, $files_list)) - $result['error'][$page] = array($menu_path); - - if($page != $file) continue; - array_push($list, $menu_path); + if(!isset($sub_pages['label'])) $sub_pages['label']=$sub_pages['url']; + + $menu_path = $sub['label'].'->'.$sub_pages['label']; + + if($sub_pages['url'] == $file){ + array_push($list, $menu_path); + } + if(!in_array($sub_pages['url'], $files_list)) + $result['error'][$sub_pages['url']] = array($menu_path); + + if(isset($sub_pages['sub_pages'])) foreach($sub_pages['sub_pages'] as $page){ + $menu_path = $sub['label'].'->'.$sub_pages['label'].'->sub_pages'; + + if(!in_array($page, $files_list)) + $result['error'][$page] = array($menu_path); + + if($page != $file) continue; + array_push($list, $menu_path); + } } } - } - if(count($list) != 1) $level = 'worning'; - else $level = 'normal'; + + if(count($list) != 1) $level = 'worning'; + else $level = 'normal'; - $result[$level][$file] = $list; - } - foreach($result as $level => $files_list) - { -if(defined('USE_MENU_DETAILS')) -{ - echo OBR.'(menu check) ['.$level.OBR; - foreach($files_list as $file => $menu_list) - { - echo "(menu check)".SPACE.SPACE.SPACE.SPACE.$file.' {'.implode(',',$menu_list)."}".OBR; + $result[$level][$file] = $list; + } + + foreach($result as $level => $files_list){ + if(defined('USE_MENU_DETAILS')){ + echo OBR.'(menu check) ['.$level.OBR; + foreach($files_list as $file => $menu_list){ + echo '(menu check)'.SPACE.SPACE.SPACE.SPACE.$file.' {'.implode(',',$menu_list).'}'.OBR; + } + } + else{ + echo OBR.'(menu check) ['.$level.'] = '.count($files_list).OBR; + } } -} -else -{ - echo OBR.'(menu check) ['.$level."] = ".count($files_list).OBR; -} } -} } } - COpt::set_memory_limit('8M'); - COpt::profiling_start("script"); + COpt::set_memory_limit('320M'); + COpt::profiling_start('script'); } -else -{ +else{ $static = null; if(version_compare(phpversion(),'5.0','>=')) $static = 'static'; diff --git a/frontends/php/include/db.inc.php b/frontends/php/include/db.inc.php index b36a4bbf..8628e51e 100644 --- a/frontends/php/include/db.inc.php +++ b/frontends/php/include/db.inc.php @@ -268,7 +268,7 @@ { global $DB, $DB_TYPE; -COpt::savesqlrequest($query); +//COpt::savesqlrequest($query); $result = false; if( isset($DB) && !empty($DB) ) @@ -355,7 +355,7 @@ COpt::savesqlrequest($query); { global $DB,$DB_TYPE; -COpt::savesqlrequest($query); +//COpt::savesqlrequest($query); $result = false; diff --git a/frontends/php/include/events.inc.php b/frontends/php/include/events.inc.php index 1d6b92bb..a4c0874d 100644 --- a/frontends/php/include/events.inc.php +++ b/frontends/php/include/events.inc.php @@ -224,6 +224,7 @@ function event_initial_time($row,$show_unknown=0){ if(!empty($events) && ($events[0]['value'] == $row['value'])){ return false; } + return true; } @@ -247,7 +248,8 @@ function first_initial_eventid($row,$show_unknown=0){ ' FROM events e '. ' WHERE e.objectid='.$row['triggerid'].$sql_cond. ' AND e.object='.EVENT_OBJECT_TRIGGER. - ' ORDER BY e.eventid'; + ' ORDER BY e.object, e.objectid, e.eventid'; +// ' ORDER BY e.eventid'; $res = DBselect($sql,1); if($rows = DBfetch($res)) return $rows['eventid']; @@ -259,8 +261,8 @@ function first_initial_eventid($row,$show_unknown=0){ ' WHERE e.eventid > '.$eventid. ' AND e.objectid='.$row['triggerid'].$sql_cond. ' AND e.object='.EVENT_OBJECT_TRIGGER. - ' ORDER BY e.eventid'; - + ' ORDER BY e.object, e.objectid, e.eventid'; +// ' ORDER BY e.eventid'; $res = DBselect($sql,1); if($rows = DBfetch($res)){ @@ -280,7 +282,8 @@ function first_initial_eventid($row,$show_unknown=0){ ' AND e.objectid='.$row['triggerid']. ' AND e.object='.EVENT_OBJECT_TRIGGER. ' AND e.value='.$row['value']. - ' ORDER BY e.eventid'; + ' ORDER BY e.object, e.objectid, e.eventid'; +// ' ORDER BY e.eventid'; $res = DBselect($sql,1); $rows = DBfetch($res); @@ -305,18 +308,25 @@ function get_latest_events($row,$show_unknown=0){ ' FROM events e '. ' WHERE e.objectid='.$row['triggerid']. ' AND e.eventid < '.$row['eventid']. - ' AND '.zbx_sql_mod('e.object',1000).'='.EVENT_OBJECT_TRIGGER. + ' AND e.object='.EVENT_OBJECT_TRIGGER. +// ' AND '.zbx_sql_mod('e.object',1000).'='.EVENT_OBJECT_TRIGGER. ' AND e.value='.TRIGGER_VALUE_FALSE. - ' ORDER BY e.eventid DESC'; + ' ORDER BY e.object DESC, e.objectid DESC, e.eventid DESC'; +// ' ORDER BY e.eventid DESC'; + + if($rez = DBfetch(DBselect($sql,1))) $eventz[] = $rez['eventid']; $sql = 'SELECT e.eventid, e.value '. ' FROM events e'. ' WHERE e.objectid='.$row['triggerid']. ' AND e.eventid < '.$row['eventid']. - ' AND '.zbx_sql_mod('e.object',1000).'='.EVENT_OBJECT_TRIGGER. + ' AND e.object='.EVENT_OBJECT_TRIGGER. +// ' AND '.zbx_sql_mod('e.object',1000).'='.EVENT_OBJECT_TRIGGER. ' AND e.value='.TRIGGER_VALUE_TRUE. - ' ORDER BY e.eventid DESC'; + ' ORDER BY e.object DESC, e.objectid DESC, e.eventid DESC'; +// ' ORDER BY e.eventid DESC'; + if($rez = DBfetch(DBselect($sql,1))) $eventz[] = $rez['eventid']; if($show_unknown != 0){ @@ -324,9 +334,11 @@ function get_latest_events($row,$show_unknown=0){ ' FROM events e'. ' WHERE e.objectid='.$row['triggerid']. ' AND e.eventid < '.$row['eventid']. - ' AND '.zbx_sql_mod('e.object',1000).'='.EVENT_OBJECT_TRIGGER. + ' AND e.object='.EVENT_OBJECT_TRIGGER. +// ' AND '.zbx_sql_mod('e.object',1000).'='.EVENT_OBJECT_TRIGGER. ' AND e.value='.TRIGGER_VALUE_UNKNOWN. - ' ORDER BY e.eventid DESC'; + ' ORDER BY e.object DESC, e.objectid DESC, e.eventid DESC'; +// ' ORDER BY e.eventid DESC'; if($rez = DBfetch(DBselect($sql,1))) $eventz[] = $rez['eventid']; } diff --git a/frontends/php/include/triggers.inc.php b/frontends/php/include/triggers.inc.php index d862ffb3..cce6627c 100644 --- a/frontends/php/include/triggers.inc.php +++ b/frontends/php/include/triggers.inc.php @@ -2245,19 +2245,9 @@ return $result; } - function get_row_for_nofalseforb($row,$cond){ - - $sql = 'SELECT e.eventid, e.value '. -// ' FROM events e LEFT JOIN triggers t ON e.objectid=t.triggerid AND e.object='.EVENT_OBJECT_TRIGGER. -// ' WHERE '.zbx_sql_mod('e.object',1000).'='.EVENT_OBJECT_TRIGGER. - ' FROM events e '. - ' INNER JOIN triggers t ON e.objectid=t.triggerid '. - ' AND '.zbx_sql_mod('e.object',1000).'='.EVENT_OBJECT_TRIGGER. - ' WHERE e.objectid='.$row['triggerid']. - ' AND t.triggerid=e.objectid '.$cond. - ' ORDER by e.eventid DESC'; - + function get_row_for_nofalseforb($row,$sql){ $res_events = DBSelect($sql,1); + if(!$e_row=DBfetch($res_events)){ return false; } @@ -2266,7 +2256,9 @@ } if(($row['value']!=TRIGGER_VALUE_TRUE) && (!event_initial_time($row))){ - if(!$eventid = first_initial_eventid($row,0)) return false; + if(!$eventid = first_initial_eventid($row,0)){ + return false; + } $sql = 'SELECT e.eventid, e.value'. ' FROM events e '. |
