0

这是代码

if(file_exists('1.mp4')){
echo "File Exists";
//Performing some operations on file
}
else{
    echo "File Does Not Exists";
}

现在,问题是在上传文件时满足“如果”条件。
文件上传正在进行中,然后我正在对该文件执行一些操作。
但是由于上传/复制/创建正在进行中,文件不完整,这就是问题所在。

如何在 file_exists 之后等待文件成功上传/复制/创建。然后对其进行操作?

4

1 回答 1

1

首先,除非这是最后可能的选择,否则我不会推荐这个。知道文件何时准备好比猜测复制操作是否完成要好。

即使文件不再增长并不意味着内容实际上是有效的;也许复制操作被中止并且部分文件仍然存在;如果没有校验和,您将不知道该文件是否可以实际使用。

function waitFor($file, $delay = 1)
{
    if (file_exists($file)) {
        $current_size = filesize($file);
        while (true) {
            sleep($delay);
            clearstatcache(false, $file); // requires >= 5.3
            $new_size = filesize($file);
            if ($new_size == $current_size) {
                break;
            }
            $current_size = $new_size;
        }

        return $current_size;
    } else {
        return false;
    }
}

waitFor('/path/to/file', 2); 
// consider file is ready if size not changed for two seconds
于 2013-09-10T06:14:00.560 回答