file_exists()循环没有';t检测文件何时添加到目录


file_exists() loop doesn't detect when file is added to directory

我目前有一个循环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目录中的文件?

谢谢!

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

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

这将是一种更好的方法:

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

它会让你的脚本每秒钟都处于休眠状态,然后检查文件。您可以将其更改为仅运行30次。