├── README.md
├── LICENSE
└── KnuckleLog.php
/README.md:
--------------------------------------------------------------------------------
1 | # KnuckleLog
2 |
3 | Standalone PHP fast & low memory usage class for Nginx access log parsing.
4 |
5 | This class is designed to parsing small or large NGINX access log files.
6 |
7 | Its feature is that it handles part of the file with a row limit, and it also returns the total number of rows in the file.
8 |
9 | Tests on access.log => 500 MB.
10 |
11 | Docs coming soon...
12 |
13 | ## Usage
14 |
15 | ```php
16 |
17 | // Initialize (parse nginx accesss log in default format with offset = 0 and limit 10 lines
18 | $data = new KnuckleLog('/var/log/nginx/access.log', '%h %l %u %t "%r" %>s %O "%{Referer}i" \"%{User-Agent}i"', 0, 10);
19 |
20 | // Get array of data & data count
21 | $array = $data->worker();
22 |
23 | // Total lines in log file
24 | echo '
'.$array['totalLines'].'
';
25 |
26 | // Dump data array
27 | echo '
';
28 | print_r($array['data']);
29 | echo '
';
30 |
31 | ```
32 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Igor Pankov
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/KnuckleLog.php:
--------------------------------------------------------------------------------
1 | s %b';
6 | protected $pcreFormat;
7 | protected $handler = null;
8 | protected $fbuffer = [];
9 | protected $offsetLines = 0;
10 | protected $limitLines = 0;
11 | protected $patterns = [
12 | '%%' => '(?P\%)',
13 | '%a' => '(?P)',
14 | '%A' => '(?P)',
15 | '%h' => '(?P[a-zA-Z0-9\-\._:]+)',
16 | '%l' => '(?P(?:-|[\w-]+))',
17 | '%m' => '(?POPTIONS|GET|HEAD|POST|PUT|DELETE|TRACE|CONNECT|PATCH|PROPFIND)',
18 | '%p' => '(?P\d+)',
19 | '%r' => '(?P(?:(?:[A-Z]+) .+? HTTP/[1-3].(?:0|1))|-|)',
20 | '%t' => '\[(?P