summaryrefslogtreecommitdiffstats
path: root/frontends/php/include
diff options
context:
space:
mode:
authorartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-11-27 10:35:11 +0000
committerartem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2007-11-27 10:35:11 +0000
commit1bd6dc62e58531f845b82f6192f7eb009aea400f (patch)
tree40ffcda3f1b6a7ad9b53e19a81ea47aa907d1e7e /frontends/php/include
parent98ce4eb6a912de7878aa3632c8de0fecd22455c8 (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.php329
-rw-r--r--frontends/php/include/db.inc.php4
-rw-r--r--frontends/php/include/events.inc.php32
-rw-r--r--frontends/php/include/triggers.inc.php18
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 '.