2015-11-11 4 views
1

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

Вот мой 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

Вы пытаетесь использовать относительный путь, вам нужен абсолютный - 'if (file_exists (getcwd(). $ Filename)) {....' – Darren

+0

Это, похоже, не помогает. Но спасибо! – user1661677

ответ

3

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

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

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

+0

Просто попробовал - еще не повезло. Одна вещь, которую я заметил, не только не заменяет сценарий на изменение имени файла, но мне нужно полностью перезагрузить браузер, чтобы снова проверить сценарий (с существующим именем файла). Кажется, что проблема кеширования наверняка, но 'clearstatcache()', похоже, не делает этого трюка. – user1661677

3

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

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