2013-12-20 73 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尝试的另一种方式,因为他说,如果文件仍然存在并且“准备就绪”,那么它就可以工作。 –