Heim >Backend-Entwicklung >PHP-Tutorial >PHP reguläres Parsen der Apache-Protokolldatei

PHP reguläres Parsen der Apache-Protokolldatei

巴扎黑
巴扎黑Original
2016-11-09 13:28:511892Durchsuche

Sie können das Protokoll stundenweise rollen und reguläre PHP-Ausdrücke verwenden, um das Protokoll zu analysieren

$logLine ='127.0.0.1 - - [22/May/2015:17:09:13 +0800] "GET /sale/images/y-select.png HTTP/1.1" 200 1095';
$pattern = &#39;/^(?P<ip>[0-9.]+) - - \[(?P<time>[^\]]+)\]+ "GET (?P<url>[^ ]+) HTTP\/1.[1|0|2]" (?P<status>[0-9.]+) (?P<size>[0-9.]+)/i&#39;;
preg_match($pattern, $log, $match);
//var_dump($match);
$ip     = $match[&#39;ip&#39;];
$time   = strtotime($match[&#39;time&#39;]);
$url    = $match[&#39;url&#39;];
$status = $match[&#39;status&#39;];
$size   = $match[&#39;size&#39;];
printf("IP:%s 访问时间:%s URL:%s 状态:%s 文件尺寸:%s",$ip,$time,$url,$status,$size);

Sie können dies auch tun

Reguläre Ausdrücke verwenden, um Apache-Protokolldateien zu trennen

www.MyException.Cn Geteilt von Netizens am: 26.08.2015 Aufrufe: 17 Mal

Verwenden Sie reguläre Ausdrücke, um Apache-Protokolldateien zu trennen
Beispiel für Apache-Protokolldateien im allgemeinen Protokollformat:

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326

Kombiniert Protokollformat für Apache-Protokolldateibeispiel:

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http:/ /www.example .com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"



Die IP-Adresse des Clients.
Die vom Client-Identitätsprozess ermittelte RFC1413-Identität. Das Symbol „-“ in der Ausgabe zeigt an, dass die Informationen hier ungültig sind.
Die vom HTTP-Authentifizierungssystem erhaltene Client-ID (Benutzer-ID) für den Zugriff auf die Webseite. Wenn die Webseite nicht passwortgeschützt ist, lautet dieses Element „-“.
Der Zeitpunkt, zu dem der Server die Anforderungsverarbeitung abschließt.
Das Protokoll, das von der durch die Aktion des Clients angeforderten Ressource verwendet wird.
Der vom Server an den Client zurückgegebene Statuscode.
Die Anzahl der an den Client zurückgegebenen Bytes ohne Antwortheader. Wenn keine Informationen zurückgegeben werden, sollte dieses Element „-“ sein.
Anforderungsheader „Referer“.
Anforderungsheader „User-Agent“.
Der zum Extrahieren von Informationen verwendete reguläre Ausdruck besteht aus:

^: entspricht dem Anfang jeder Zeile.
([0-9.] )s: IP-Adresse anpassen.
([w.-] )s: Entspricht einer Identität, bestehend aus Zahlen, Buchstaben, Unterstrichen oder Punkttrennzeichen.
([w.-] )s: entspricht der Benutzer-ID, bestehend aus Zahlen, Buchstaben, Unterstrichen oder Punkttrennzeichen.
([[^[]] ])s: passende Zeit.
"((?:[^"]|") )"s: Match-Anfrageinformationen, maskierte doppelte Anführungszeichen können in doppelten Anführungszeichen erscheinen.
(d{3})s: Match-Statuscode
(d |-)s: Entspricht der Anzahl der Antwortbytes oder -.
"((?:[^"]|"))"s: Entspricht dem Anforderungsheader „Referer“ und kann in doppelten Anführungszeichen stehen. „eindeutige doppelte Anführungszeichen“.
"((?:[^"]|") )" : Entspricht dem Anforderungsheader „User-Agent“, und in den doppelten Anführungszeichen können maskierte doppelte Anführungszeichen vorkommen.
$ : Entspricht dem Ende der Zeile .
Der endgültige Ausdruck lautet wie folgt:

^([0-9.] )s([w.-] )s([w.-] )s([[^[]] ])s" ((?:[^"]|") )"s(d{3})s(d |-)s"((?:[^"]|") )"s"((? :[^" ]|") )"$


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn