PHP - проверить, закончил ли файл кодирование - PullRequest
1 голос
/ 17 сентября 2011

У меня есть файл .bat, который кодирует mp3-файл на стороне сервера, и у меня также есть функция php, которая проверяет, существует ли файл, а затем добавляет его в качестве элемента списка HTML. Проблема, с которой я сталкиваюсь - иногда файл mp3 не кодируется на стороне сервера. Если кто-то попытается загрузить файл, пока он находится в процессе кодирования, это приведет к сбою браузера.

Могу ли я проверить, чтобы убедиться, что размер файла увеличен, прежде чем перечислять элемент?

Вот функция, которая проверяет, существует ли файл:

function ListDir($dir_handle,$path) {
    global $listing;
    echo "<ul>";
    while (false !== ($file = readdir($dir_handle))) {
      $dir =$path . $file;
      if(is_dir($dir) && $file != '.' && $file !='..' && filesize($file) {
            $handle = @opendir($dir) or die("Unable to open file $file");
            echo "<li>".$dir;
            ListDir($handle, $dir);
            echo "</li>";
      } elseif($file != '.' && $file !='..' && $file !='.htaccess') {
          $new_string = ereg_replace("[^A-Za-z.]", "", $file);
            echo '<li><a href="'. str_replace('wav', 'mp3', $dir) .'">'.str_replace('wav', 'mp3',  $new_string).'</a></li>';
      }
    }
    echo "</ul>";
    closedir($dir_handle);
}

Ответы [ 2 ]

4 голосов
/ 17 сентября 2011

Сделайте так, чтобы летучая мышь закодировала, затем переместитесь в конечное местоположение для «законченного» состояния, если его там нет - это не сделано.Это похоже на ответ drew010, за исключением того, что он использует тот же файл из рабочего каталога в рабочий каталог.

Это также предотвращает доступ к нему из любых ресурсов, пока он не будет готов, что потенциально может вызвать проблемы.

1 голос
/ 17 сентября 2011

Вы не можете знать окончательный размер файла, поэтому ваш файл bat создаст файл, такой как mp3filename.work или что-то еще, и затем файл bat удалит его, когда кодирование завершится, поэтому, если файл .work не существует Затем кодирование завершено.

...