2013-12-20 33 views
1

我試圖暫停我的php代碼,直到某個文件包含某個文本。當文件包含文本時繼續PHP腳本

$exit = FALSE; 
while (!$exit) { 
     usleep(250000); 
     $fname = "/var/www/file2"; 
     $file = fopen($fname, 'r'); 
     $theText = fread($file, filesize($fname)); 
     fclose($file); 
     if (split("\n", $theText)[0] == "ready" || $dir==0) { 
       $exit = TRUE; 
       $file = fopen($fname, 'w'); 
       fclose($file); 
     } 
} 

一旦這個文件有單詞在第一行「準備好了」,我希望腳本繼續(或如果$ dir爲0)。但只有當腳本啓動時文件已經包含這個單詞纔有效。如果文件在循環中寫入該文件,它將不起作用。

它可能不是實際上重新加載文件,而是加載緩存的文件?我將如何解決這個問題?或者還有別的嗎?

+0

一些問題,如果您的條件 – Riskhan

+0

那麼你到底想做什麼?如果文件爲空,您正試圖等待文件被寫入?當你運行腳本時,文件將被讀入當前狀態,它不會等待一些將來的應用程序寫入它? –

+0

設置爲「$ dir」的是什麼? – Jompper

回答

1

使用控制結構break;結束while()循環執行。

您可以逐行讀取文件fgets()

+0

但是這不能解決問題?好的,最好使用break;但上面的解決方案也應該可以工作。而fgets()只是Stoopkid嘗試的另一種方式,因爲他說,如果文件仍然存在並且「準備就緒」,那麼它就可以工作。 –