Cabaran: Membaca dua baris terakhir fail log besar tanpa memuatkan keseluruhan fail ke dalam ingatan, mengulangi proses ini setiap 10 saat.
Stat Function: Untuk mengelakkan memuatkan keseluruhan fail ke dalam ingatan, panjang fail boleh diperoleh menggunakan fungsi Stat() pakej os. Ini memberikan saiz fail dalam bait.
Mencari atau Membaca Hadapan:
Pertimbangkan contoh yang diberikan dalam soalan anda:
Coretan Kod:
package main import ( "fmt" "os" "time" ) const MYFILE = "logfile.log" func main() { c := time.Tick(10 * time.Second) for _ = range c { readFile(MYFILE) } } func readFile(fname string) { file, err := os.Open(fname) if err != nil { panic(err) } defer file.Close() buf := make([]byte, 62) stat, statErr := file.Stat() if statErr != nil { panic(statErr) } start := stat.Size() - 62 _, err = file.ReadAt(buf, start) if err == nil { fmt.Printf("%s\n", buf) } }
Dalam contoh ini:
Atas ialah kandungan terperinci Bagaimana Cara Membaca Baris Terakhir dengan Cekap daripada Fail Besar dalam Go Setiap 10 Saat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!