tokenring
Goto Top

PHP Array dursuchen

Hallo,

ich habe jetzt schon einige Zeit rumgesucht, hab aber leider noch nicht die Lösung gefunden.

Mein Problem ist eigentlich total simpel, und wahrscheinlich auch recht schnell zu beantworten.

Folgende Situation:

Ich habe ein Logfile von einem Backup.
Das Logfile ist eine txt-Datei.

Via PHP möchte ich nun in dieses Logfile schauen, und eine Rückmeldung begkommen ob das Logfile "Error" gemeldet hat oder nicht.

Hier mein Script:
 
<?php
$logfile = file("Testkunde\logfile1.txt");  

if(in_array("Error",$logfile))  
{
echo "Fehler im Logfile";  
}
else
{
echo "Kein Fehler im Logfile";  
}
?>
Wäre super wenn ihr mir helfen könntet.

VIelen Dank und einen schönen Abend.

Content-ID: 192309

Url: https://administrator.de/forum/php-array-dursuchen-192309.html

Ausgedruckt am: 23.12.2024 um 18:12 Uhr

Dani
Dani 05.10.2012 aktualisiert um 20:28:11 Uhr
Goto Top
Moin,
wie sieht die Logfile aus, was gibt das Script zurück und welche PHP-Version nutzt du?!
Hier ist beschrieben, wie du die Datei in ein Array bringst.


Grüße,
Dani
TokenRing
TokenRing 05.10.2012 um 20:33:21 Uhr
Goto Top
Hi,

das Script springt gleich zu Else-Ausgabe und sagt "kein Fehler im Logfile". (obwohl ein Error drinnen steht)
Aktuell teste ich das Script in Xaamp. PHP-Version PHP/5.3.5
Hier noch das zu prüfende Logfile:


22:00:03 Start of Snapshot 1.40 [Mar 5 2012] at 30.08.2012
22:00:03 Running on Windows Server 2003, Standard Service Pack 1 (3790)
22:00:03 Memory Info: Total: 1022Mb, Free: 113Mb, Pagefile total: 2469Mb, Pagefile free: 32Mb
22:00:03 Command line: SNAPSHOT hd1:* G:\BackupDSS4\Drive$DISK.sna --LogFile:C:\Backup\Logfile\logfile4.txt --usevss
22:00:07 Disks in backup:
22:00:07 C: -> G:\BackupDSS4\DriveC.sna
22:00:08 Preparing for backup
22:00:13 Starting Snapshot creation
22:00:13 Creating shadow set {ec81fb40-ffa0-400d-86f7-56662933a347}
22:00:19 Register shadow copy {83251b86-578a-44bb-876b-26aaefb2fe80}
22:00:19 The Volume Snapshot was created successfully
22:00:47 Start VSS backup of C: -> G:\BackupDSS4\DriveC.sna
22:00:48 *
22:00:48 Snapshot error NTCPVOL2FILE, line 416
22:00:48 error allocating 7364609 bytes for the volume bitmap.
Can't build used cluster map.
22:00:48 last Windows Error: 5af-Die Auslagerungsdatei ist zu klein, um diesen Vorgang durchzuführen.
22:00:48
*
22:00:48 free space info: total 230.000MB, 118.503MB free, 111.497MB must be saved
22:00:49 Unable to allocate 29444272 bytes for the offset information
22:00:49 C: -> G:\BackupDSS4\DriveC.sna
22:00:49 operation aborted
22:00:49 Backup of C: aborted
22:00:49 Deleting previously generated shadow copy
22:00:49 Unregister shadow copy {83251b86-578a-44bb-876b-26aaefb2fe80}
22:00:49 Error occurred - exitcode 1
22:00:49 End of Snapshot 1.40 [Mar 5 2012] at 30.08.2012
QfineRs
QfineRs 05.10.2012 um 20:35:01 Uhr
Goto Top
Ich denke, du musst die Textdatei erstmal Zeile für Zeile durchlaufen lassen und in jeder Zeile nach dem Wort suchen.
Dani
Dani 05.10.2012 um 20:36:59 Uhr
Goto Top
Hast du das PHP-Script mit Hilfe des Links angepasst?!
Bitte nochmal posten...


GRüße,
Dani
TokenRing
TokenRing 05.10.2012 um 20:53:09 Uhr
Goto Top
@ Dani
das Script wäre jetzt angepasst.

@QfineRs
wie kann ich das bewerkstelligen

vielen Dank schonmal für die schnelle Reaktion
QfineRs
QfineRs 05.10.2012 aktualisiert um 20:55:10 Uhr
Goto Top
Das hier sollte funktionieren:

Achte darauf, dass das gelesene alles to Lower Case gemacht wird!

$openfile = fopen('logfile.txt', 'r');   
$searchtext = "error";   
$ausgabe = array(); 

while (!feof($openfile)) { 
    if (strpos($zeile = strtolower(fgets($openfile, 4096)), $searchtext) !== FALSE) {
        $ausgabe = $zeile;  
    }
} 
if (empty($ausgabe)) {
    echo $searchtext . " wurde nicht gefunden!";  
}else {
    echo $searchtext . " wurde gefunden!";  
}
TokenRing
TokenRing 05.10.2012 um 20:57:43 Uhr
Goto Top
super, funktioniert einwandfrei.

Vielen vielen Dank face-smile
QfineRs
QfineRs 05.10.2012 um 21:00:03 Uhr
Goto Top
Text muss aber auch immer als lowercase gesucht werden. Nun kannst du auch einfach zu der Zeile Springen und die ganze zeile, in welcher das Error steht ausgeben... .
Bitte freut mich, wenn ich weiter helfen konnte.
Dani
Dani 05.10.2012 um 22:15:22 Uhr
Goto Top
Moin,
hier noch meine Lösung:
<?php
$array = file("test.txt");  

for ($x = 0; $x < sizeof($array); $x++) {
	if(preg_match("/error/i" , $array[$x])) {  
		echo "Fehler im Logfile:&nbsp;". $array[$x]."<br />";  
	}
}
?>
Wenn's das war, bitte den Thread auf gelöst setzen.


Grüße,
Dani