我有一个.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);
}
答案 0 :(得分:4)
让蝙蝠编码,然后移动到“完成”状态的最终位置,如果它不存在 - 它没有完成。这类似于drew010的答案,除了它使用相同的文件,从工作目录到生产目录。
这也阻止了任何资源可以访问它,直到它准备就绪,这可能会导致问题。
答案 1 :(得分:1)
你真的不知道最终的文件大小,所以让你的bat文件创建一个像mp3filename.work之类的文件,然后让bat文件在编码完成后删除它,所以如果.work文件不存在,然后编码就完成了。