9
A
回答
21
您需要循環睡眠:
$file='/home/user/youfile.txt';
$lastpos = 0;
while (true) {
usleep(300000); //0.3 s
clearstatcache(false, $file);
$len = filesize($file);
if ($len < $lastpos) {
//file deleted or reset
$lastpos = $len;
}
elseif ($len > $lastpos) {
$f = fopen($file, "rb");
if ($f === false)
die();
fseek($f, $lastpos);
while (!feof($f)) {
$buffer = fread($f, 4096);
echo $buffer;
flush();
}
$lastpos = ftell($f);
fclose($f);
}
}
(測試..它的工作原理)
-1
只是一個想法..
您是否想過使用* nix tail命令?從PHP執行命令(帶有一個將返回一定數量的行的參數)並在你的php腳本中處理結果。
+0
您可能無法確定在多次呼叫之間寫入了多少行:) – bisko 2010-07-10 12:51:44
0
您可以在不使用文件句柄時關閉文件句柄(一旦寫入了一部分數據)。或者您可以使用緩衝區來存儲數據,並僅在文件已滿時將其放入文件。這樣你就不會一直打開文件。
如果您想要在寫入文件時立即獲得寫入文件的所有內容,則可能需要擴展代碼,寫入數據,以便將其輸出到其他位置(屏幕,某些變量,其他文件...)
0
例如:
$log_file = '/tmp/test/log_file.log';
$f = fopen($log_file, 'a+');
$fr = fopen($log_file, 'r');
for ($i = 1; $i < 10; $i++)
{
fprintf($f, "Line: %u\n", $i);
sleep(2);
echo fread($fr, 1024) . "\n";
}
fclose($fr);
fclose($f);
//Or if you want use tail
$f = fopen($log_file, 'a+');
for ($i = 1; $i < 10; $i++)
{
fprintf($f, "Line: %u\n", $i);
sleep(2);
$result = array();
exec('tail -n 1 ' . $log_file, $result);
echo "\n".$result[0];
}
fclose($f);
相關問題
- 1. 閱讀/寫入plist,文件結構不正確
- 2. Python的csv閱讀器不斷閱讀相同的文件
- 3. 閱讀XML文件並寫入到一個php數組/文件
- 4. 如何閱讀J2ME /寫文本文件
- 5. 如何不能寫入文件,而閱讀,反之亦然
- 6. npm live-server不讀取php文件
- 7. 寫在PDF文件閱讀
- 8. 讀取正在被其他進程寫入的文件
- 9. 讀取正在寫入的XML文件
- 10. 如何閱讀的文本文件,並將其寫入到Excel文件在asp.net
- 11. 閱讀.csv ANSI文件並寫入mysql
- 12. 閱讀php文件
- 13. 閱讀CSV文件在PHP
- 14. XLSX文件,閱讀在PHP
- 15. 如何閱讀不斷更新的文件?
- 16. php imap電子郵件正文閱讀
- 17. 閱讀文本文件截斷在PHP線路輸出
- 18. 如何保護讀取/寫入交易與PHP文件在PHP
- 19. 閱讀.NC文件被Python
- 20. 正在讀取和寫入文件C++
- 21. 正在讀取和寫入文件
- 22. 通過JavaScript或PHP閱讀MS Excel文件並寫入MongoDB
- 23. Android文件編寫,閱讀
- 24. 寫/閱讀plist文件iPhone
- 25. php如何鎖定一個文件只有在寫入時才被讀取?
- 26. 閱讀文件和averging,不斷要求用戶輸入
- 27. 正在寫入文件時正在讀取文件
- 28. Java:Excel/Json - 如何閱讀Json文件並寫入Excel
- 29. 如何閱讀它被寫入到紅寶石
- 30. PHP - 如何寫入文件?
該頁面無法加載......看起來它卡在一個infite循環中 – HyderA 2010-07-11 02:24:17
@gAMBOOKa嘗試在echo之後添加一個flush。是的,這是一個無限循環。這不是重點嗎? – Artefacto 2010-07-11 09:54:33