EnderUNIX Team.


EnderUNIX İpucu

Arkadaşıma gönder , Ana Sayfa

[ PHP ]

"Loglardan iki karakter arasındaki verileri toplamak" - Gokhan TOPLAR - (2006-07-04 00:14:05)   [3237]

7.3 GB boyunda dev bir log dosyamız olsun. Bu dosyada < ve > karakterleri arasında yer alan bilgiyi başka bir dosyaya almak istiyoruz.

Aşağıdaki php betiği bu işe yaramaktadır.

// Fonksiyon icin Morgan Galpin'e tesekkurler
function returnSubstrings($text, $openingMarker, $closingMarker) {
$openingMarkerLength = strlen($openingMarker);
$closingMarkerLength = strlen($closingMarker);

$result = "";
$position = 0;
while (($position = strpos($text, $openingMarker, $position)) !== false) {
$position += $openingMarkerLength;
if (($closingMarkerPosition = strpos($text, $closingMarker, $position)) !== false) {
$result = substr($text, $position, $closingMarkerPosition - $position);
$position = $closingMarkerPosition + $closingMarkerLength;
}
}
return $result;
}


$count_and_print = 1;
// Open your very large file to pointer
$handle = @fopen("sizin_log_dosyasi_adi", "r");
if ($handle) {
while (!feof($handle)) {
// Her seferde kucuk bir kismi al
$buffer = fgets($handle, 4096);
// Bunu buffera yolla
// Buradaki < ve > karakteri yerine arama yapilacak olanlari koyun
$result = returnSubstrings($buffer, "<", ">");
// Her bir satirda null varsa kontrol et ve yazma
if ($result != null) {
echo "S. No: " .$count_and_print. " E-posta: ".$result. "\n";
$count_and_print++;
}

}
}

fclose($handle);
echo "EOF";

?>

Arkadaşıma gönder , Ana Sayfa