Bir dosyayı açık tutmak ve her satırı ve sonraki satırları işlemek için PHP bir yolu var mı?

3 Cevap php

Ben açık apache_log dosyasını tutar ve günlüğüne "dinlemek" ve o olur, her günlük girişinin başa bir php komut dosyası yazmak istiyorum.

Ve boyutu farklı olduğu zaman, yeni satırları okumak ve bunları işlemek - Ben, bir dosyayı açmak satır sayısını almak, sonra bir döngü içinde tekrar yapmak gerektiğini düşünüyorum.

Ben yanlış ağaca havlıyor, ya da ben cevapsız bir aptal kolay bir çözüm yoktur muyum?

Chris

3 Cevap

Kirli hızlı-ve-yönlü tail -f nasılsa (mümkün varsayarak) kullanmak olacaktır:

Sen boru PHP için çıkış olabilir: tail -f file | php myscript.php, ve sonra php://stdin okunur.

Veya, popen komut kendisi kullanabilirsiniz:

$res = popen('tail -f file_name', 'r');

while (!feof($res)) {
  $line = fgets($res);
  echo $line;
}

Benim akla gelen seçenek, her dakika ya da öylesine bir cron işi komut dosyasını çalıştırın ve sadece her zaman vardı son satırı hatırlıyorum olacaktır.

Eğer php inotify Eğer gözlemlemek bir dosya üzerinde bir değişiklik olduğunda her zaman adında bir geri çağırma işlevi olabilir bakmak gerekir. Eğer eralier dosyayı açtı ve tüm orada okursanız, dosyanın tekrar okuma size yeni içerik almalısınız.