我有一個調用外部進程的網頁。此過程將文本文件寫入到我的服務器上的文件夾中。我無法控制這個外部過程。PHP檢查文件大小以查看它是否改變
我試圖監視文件,看看它是否正在寫入文件大小的變化。一旦外部進程停止寫入,文件大小將保持不變。
我覺得這樣的事情可能工作:
<?php
$old = 0;
$new = 1;
while ($old == $new) {
$old = filesize ('/http/test/test.txt');
echo $old;
sleep(2);
$new = filesize ('/http/test/test.txt');
echo $new;
}
echo $old;
echo $new;
echo "done";
?>
但事實並非如此。如何暫停我的腳本,直到文件停止增大爲止?
這裏也有類似的問題,但我還沒有看到使用flock()
或lsof
這兩個我沒有訪問的例子。
可以這樣做嗎?
感謝
UPDATE 這似乎是工作。
<?php
$old = 0; $new = 1;
$filePath = "/http/test/test.txt";
while ($old != $new) {
$old = filesize ($filePath);
clearstatcache();
sleep(1);
$new = filesize ($filePath);
clearstatcache();
}
echo "done";
?>
while循環將不會執行舊=新時,首先進行! – Codemonkey
謝謝。改變'=='爲'!='似乎效果更好,但是在完成寫入文件之前,php頁面已經完成。有任何想法嗎 ? – Rocket
set_time_limit(120);在頁面的頂部將允許它運行120秒。通常需要執行多長時間? – Codemonkey