PHP büyük bir dosyada okumadan önce satır sayısını almak için nasıl

5 Cevap php

Ben zaten bu example of how to read large data files in PHP line by line kullanıyorum

Şimdi, bunu yapmak istiyorum ne, bu yüzden ne kadar işlem bırakılır bazı fikir sağlayabilir ben satır sayısı ne tam ya da en azından bir yüzdesini görüntülemek böylece dosyasındaki satır sayısını elde edilir yapılacak.

Iki kez tüm dosyasında okumadan satır sayısını almak için bir yolu var mı? (Kez satırları saymak ve bir kez işlem yapmak için)

5 Cevap

Kötü mans cevap:

Hayır, ama tahmin edebilirsiniz. Basit bir ortalama okuma (ilk 250 satır kullanınız) kalk ve bu ile gitmek.

estNumOfLines = sizeOfFile / avgLineSize

Dosyayı oluştururken zaman dosyadaki satır sayısını kapalı depolamak ...

Alternatively, you could display the number of KB processed, and that would be perfectly accurate.

Sen dosyanın boyutunu belirleyebilir, sonra okur boyutunu ekleyerek bunun üzerinden ilerlemeyi ölçmek:

$fname = 'foofile.txt';
$fsize = filesize($fname);
$count = 0;
$handle = fopen($fname, "r") or die("Couldn't get handle");
if ($handle) {
  while (!feof($handle)) {
    $buffer = fgets($handle, 4096);
    // Process buffer here..
    $count++;
    echo ($count * 4096)/$fsize . " percent read.";
  }
  fclose($handle);
}

Not: referenced answer uyarlanan kodu

Satır ve bayt değil saymak gerekir herhangi bir neden var mı? Bilmek istediğiniz tüm "yüzde done" ise, sadece sayı okunan bayt tarafından / toplam byte izleyebilirsiniz.

Bir dosyada linux komut wc -l filename.txt Bu irade çıkış hatlarının numarasını kullanabilirsiniz.

How would you know the number of pages in a book, without counting them?
You would measure the width of a page and the width of the book and divide one by the other.

Aynen, ilk birkaç hatları ortalama hat uzunluğunu hesaplamak, daha sonra dosya boyutu ile aynı matematik yapmak ...