file_exists()循环不会检测何时将文件添加到目录

时间:2015-11-11 00:36:51

标签: php while-loop file-exists

我目前有一个循环30秒的脚本。本质上,我正在寻找一个临时的“监视文件夹”,当文件存在时会触发命令。当我运行这个PHP时,当我在脚本运行的30秒内成功将video_renders/something.mp4的文件名(通过FTP)更改为video_renders/video.mp4时,它不会检测到该文件。

这是我的PHP:

<?php

$endtime = time() + 30;

while (time() < $endtime ) {

$filename = "video_renders/video.mp4";

if (file_exists($filename)) {
    //do something
     echo "Success";
 }

}

?>

这里有什么我想念的吗?为什么我的循环PHP脚本拾取文件没有添加到/video_renders目录?

谢谢!

2 个答案:

答案 0 :(得分:3)

这是一种更好的方法:

while( !file_exists($pathToFile) )
{
    sleep(1);
}

它会让你的脚本每秒睡眠,然后检查文件。您可以将其更改为仅运行30次。

答案 1 :(得分:3)

实际上,PHP不会缓存有关不存在的文件的信息。

因此,如果您对不存在的文件调用file_exists(),则在您创建文件之前它将返回FALSE。如果您创建该文件,即使您删除该文件,它也将返回TRUE。但是unlink()会自动清除缓存。