2017-05-04 29 views
0

所以問題是我正在循環檢查文件大小,例如一個文件A.txt是10個字節,並與其他PHP腳本A.txt更改爲20bytes當A.txt文件被更改時,我希望迭代停止。PHP do-while循環文件大小檢查並停止

<?php 

$i = 1; 
$a = filesize("A.txt"); 
do { 
    $c = filesize("A.txt"); 
    if ($a >= $c) { 

    } else { 
     echo file_get_contents('chat.log'); 
     $i++; 
    } 
} while ($i <= 2); 

?> 

我的錯誤是什麼?

+0

在此處發佈您的代碼時發生了什麼問題? – Philipp

+0

請在您的問題上發佈相關的代碼。 –

+0

我看到的唯一問題是您沒有清除統計緩存。當調用諸如文件大小的函數時,PHP將緩存結果,以便隨後的調用總是返回相同的數字。在你的循環中放置['clearstatcache();'](http://php.net/manual/en/function.clearstatcache.php)。 –

回答

0

看起來好像你想實現長輪詢爲聊天應用程序。

此方法可能會導致您丟失一些正在傳送的聊天消息。這不是非常可擴展的。

我建議您通過GET參數接收以前已知的文件大小,並檢查文件大小是否大於此。

然後我會建議你使用fopen打開文件並從前一個指針(GET參數)讀到文件尾,而不是每次讀取整個文件。您可能還想在每個文件大小之前清零,然後添加一個usleep(100);在while循環中。

+1

我將嘗試使用clearstatcache和usleep,實際上你是正確的我想創建聊天應用程序..並且結合我的vb.net應用程序,所以我必須這樣做,以創建聊天應用程序:) –

+0

搜索谷歌的「PHP長輪詢」,以找到更多的技術,你正在尋找什麼。 – vishva8kumara