@@ -8,6 +8,7 @@ class PHPMonitoring {
8
8
const ALERT_FILE = 'alert.lock ' ;
9
9
const CONFIG_FILE = 'config.inc.php ' ;
10
10
const ERROR_LOG = 'error.log ' ;
11
+ const MAX_LOG_DATA = 10000 ;
11
12
var $ config ;
12
13
13
14
/**
@@ -174,17 +175,18 @@ function getServices(){
174
175
175
176
/**
176
177
* Get log data
177
- * TODO set max lines to avoid memory limits
178
178
*/
179
179
function getLogData (){
180
180
$ data = array ();
181
- if (($ handle = fopen (self ::ERROR_LOG , 'r ' )) !== FALSE ) {
182
- while ((list ($ date , $ time , $ junk , $ junk , $ service ) = fgetcsv ($ handle , 128 , ' ' )) !== FALSE ) {
183
- if (!isset ($ data [$ service ])) $ data [$ service ] = array ('name ' => $ service );
184
- $ data [$ service ]['data ' ][] = array (strtotime (ltrim ($ date , '[ ' ) . ' ' . $ time )*1000 , 1 );
185
- }
186
- fclose ($ handle );
181
+ $ file = new SplFileObject (self ::ERROR_LOG );
182
+ $ file ->seek (PHP_INT_MAX );
183
+ $ file ->seek ($ file ->key () - self ::MAX_LOG_DATA );
184
+ while (!$ file ->eof ()) {
185
+ list ($ date , $ time , $ junk , $ junk , $ service ) = $ file ->fgetcsv (' ' );
186
+ if (!isset ($ data [$ service ])) $ data [$ service ] = array ('name ' => $ service , 'visible ' => false );
187
+ $ data [$ service ]['data ' ][] = array (strtotime (ltrim ($ date , '[ ' ) . ' ' . substr ($ time ,0 ,5 ))*1000 , 1 );
187
188
}
189
+ ksort ($ data );
188
190
return array_values ($ data );
189
191
}
190
192
}
0 commit comments