Цикл file_exists () не определяет, когда файл добавляется в каталог

1

В настоящее время у меня есть скрипт, который пеет в течение 30 секунд. По сути, я ищу, чтобы создать временную папку для просмотра, которая запускает команду, когда файл существует. Когда я запускаю этот PHP, он не обнаруживает файл, когда я успешно меняю имя файла (через FTP) video_renders/something.mp4 на video_renders/video.mp4 в течение 30 секунд, когда скрипт запущен.

Здесь мой PHP:

<?php

$endtime = time() + 30;

while (time() < $endtime ) {

$filename = "video_renders/video.mp4";

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

}

?>

Здесь что-то не хватает? Почему мои /video_renders файлы сценариев PHP, которые добавляются в /video_renders?

Спасибо!

  • 0
    Вы пытаетесь относительный путь, вам нужен абсолютный - if( file_exists( getcwd() . $filename ) ) { ....
  • 0
    Кажется, это не помогает. Но спасибо!
Теги:
while-loop
file-exists

2 ответа

3

Это будет лучшим подходом:

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

Это заставит ваш скрипт спать каждую секунду, а затем проверить файл. Вы можете изменить его, чтобы он запускался только 30 раз.

  • 0
    Только что попробовал - все еще не повезло. Я заметил одну вещь: не только сценарий не учитывает изменение имени файла, но мне нужно полностью перезагрузить браузер, чтобы снова протестировать сценарий (с существующим именем файла). Это похоже на проблему с кэшированием, но clearstatcache() , похоже, не справляется с задачей.
3

На самом деле PHP не кэширует информацию о несуществующих файлах.

Итак, если вы вызываете file_exists() в файл, который не существует, он вернет FALSE пока вы не создадите файл. Если вы создадите файл, он вернет TRUE даже если вы удалите файл. Однако unlink() автоматически очищает кеш.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню