Bagaimana untuk Mengira Baris dengan Cekap dalam Fail Teks Besar dalam PHP?

Linda Hamilton
Lepaskan: 2024-10-31 21:30:02
asal
321 orang telah melayarinya

How to Efficiently Count Lines in Large Text Files in PHP?

Cara Cekap Mengira Baris dalam Fail Teks Besar

Mengira baris dalam fail teks besar (lebih 200MB) boleh menimbulkan cabaran memori dalam PHP . Kaedah tradisional memuatkan keseluruhan fail ke dalam memori dan menggunakan fail() boleh membawa kepada ralat maut akibat keletihan ingatan.

Untuk menangani perkara ini, pendekatan yang lebih cekap ialah menggunakan fgets() atau fgetc(). Fungsi ini membaca fail baris demi baris atau aksara demi aksara, masing-masing, tanpa memuatkan keseluruhan fail ke dalam memori. Berikut ialah contoh menggunakan fgets():

<code class="php">$file = "largefile.txt";
$linecount = 0;
$handle = fopen($file, "r");
while(!feof($handle)){
  $line = fgets($handle);
  $linecount++;
}
fclose($handle);
echo $linecount;</code>
Salin selepas log masuk

fgets() membaca satu baris ke dalam memori pada satu masa, yang mengurangkan penggunaan memori dengan ketara.

Sebagai alternatif, fgetc() boleh digunakan untuk mengira aksara akhir baris:

<code class="php">$file = "largefile.txt";
$linecount = 0;
$handle = fopen($file, "r");
while(!feof($handle)){
  $line = fgetc($handle);
  if($line == "\n" || $line == "\r\n"){
    $linecount++;
  }
}
fclose($handle);
echo $linecount;</code>
Salin selepas log masuk

Pendekatan ini juga menggunakan kurang memori tetapi mungkin lebih perlahan disebabkan oleh overhed menyemak aksara akhir baris untuk setiap aksara.

Teknik ini membolehkan pengiraan baris yang cekap dalam fail teks besar tanpa masalah memori. Ambil perhatian bahawa kaedah ini mungkin masih menghadapi had jika satu baris melebihi had memori.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Baris dengan Cekap dalam Fail Teks Besar dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!