method parseFile documentation in bbn\Parsers\Apache
function($file, array $res = [])
{
$num = 0;
self::setLastErrors($num);
if (file_exists($file)) {
$handle = fopen($file, "r");
if ($handle) {
$current_error = false;
$min = 0;
if ($res) {
$min = X::maxWithKey($res, 'last_date');
}
while (($buffer = fgets($handle)) !== false) {
if ($parsed = self::parseLine($buffer)) {
if (isset($parsed['error'])) {
if ($min > $parsed['date']) {
continue;
}
$num++;
$idx = X::find(
$res,
[
'error' => $parsed['error'],
'file' => $parsed['file'],
'line' => $parsed['line']
]
);
if ($idx !== null) {
$res[$idx]['count']++;
$res[$idx]['last_date'] = $parsed['date'];
if (isset($res[$idx]['backtrace'])) {
unset($res[$idx]['backtrace']);
}
$current_error = $idx;
}
else{
$current_error = count($res);
$res[] = [
'first_date' => $parsed['date'],
'last_date' => $parsed['date'],
'count' => 1,
'type' => $parsed['type'],
'error' => $parsed['error'],
'file' => $parsed['file'],
'line' => $parsed['line']
];
if (count($res) > self::$file_limit) {
$tmp = $res[$current_error];
X::sortBy($res, 'last_date', 'DESC');
$current_error = X::find($res, $tmp);
array_pop($res);
}
self::setLastErrors($num);
}
}
elseif (isset($parsed['action'], $res[$current_error])) {
if (!isset($res[$current_error]['backtrace'])) {
$res[$current_error]['backtrace'] = [];
}
elseif (count($res[$current_error]['backtrace']) > 10) {
continue;
}
array_unshift($res[$current_error]['backtrace'], $parsed);
}
}
}
if (!feof($handle)) {
throw new \Exception(X::_("Error: unexpected fgets() fail"));
}
fclose($handle);
X::sortBy($res, 'last_date', 'DESC');
}
}
return $res;
}
BBN is a suite of PHP and JS libraries and VueJS components - all open-source! bbn.io, build applications, the quick way
This website uses cookies to ensure you get the best experience on our website.
© 2011-2025
BBN Solutions