我目前有一个循环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
目录?
谢谢!
答案 0 :(得分:3)
这是一种更好的方法:
while( !file_exists($pathToFile) )
{
sleep(1);
}
它会让你的脚本每秒睡眠,然后检查文件。您可以将其更改为仅运行30次。
答案 1 :(得分:3)
实际上,PHP不会缓存有关不存在的文件的信息。
因此,如果您对不存在的文件调用file_exists()
,则在您创建文件之前它将返回FALSE
。如果您创建该文件,即使您删除该文件,它也将返回TRUE
。但是unlink()
会自动清除缓存。