php file_exists 在文件被复制、创建或上传时

Posted

技术标签:

【中文标题】php file_exists 在文件被复制、创建或上传时【英文标题】:php file_exists while file is being copied or created or uploading 【发布时间】:2013-09-13 17:10:11 【问题描述】:

这是代码

if(file_exists('1.mp4'))
echo "File Exists";
//Performing some operations on file

else
    echo "File Does Not Exists";

现在,问题是上传文件时满足“if”条件。 正在上传文件,然后我正在对该文件执行一些操作。 但由于正在进行上传/复制/创建,该文件不完整,这就是问题所在。 如何在 file_exists 之后等待文件成功上传/复制/创建。然后对其进行操作?

【问题讨论】:

【参考方案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

【讨论】:

以上是关于php file_exists 在文件被复制、创建或上传时的主要内容,如果未能解决你的问题,请参考以下文章

file_get_contents 加上 file_exists (在被调用的文件内)

PHP - file_exists 还是数组缓存?

PHP Phar - file_exists() 问题

php创建文件夹和文件

PHP file_exists 对现有文件返回 false

PHP file_exists() 在某些文件上返回 false