下载文件,然后重命名它


downloading a file and then renaming it

我决定通过ftp下载文件,然后将下载的文件重命名为正确的名称,而不是直接下载文件。这样,文件出现故障的时间就会减少到最小。

下面是代码的"精华"

$status=ftp_get($conn_id, $temp , $filename, $mode);
rename ( $temp , $filename );

我基本上得到了一个错误,说文件$temp正在使用中,所以不能重命名。

问题是下载已经完成了。

我应该关闭文件还是怎么做?如何告诉PhP,你好,$temp完成了,现在我需要重命名它。

这是代码

的更全面的版本
function dealWithOneFile($filename,$conn_id)
{
    $ftpsize = ftp_size ($conn_id, $filename);
    $ext = pathinfo($filename, PATHINFO_EXTENSION);
    if ($ext == "php" || $ext == "bin" || $ext == "dat" || $ext == "BIN" || $ext == "inc")
    {
    }
    else
    {
        return;
    }
    while(false)
    if (file_exists ($filename ))
    {
        $filesize =filesize ($filename);
        if ($filesize==$ftpsize)
        {
            echo "file size is the same with the one we have here'n";
            return;
        }
    }
    $temp = "temp.bin";
    $mode= FTP_BINARY;
    if ($ext=="php")
    {
        $mode = FTP_ASCII ;
    }
    $status=ftp_get($conn_id, $temp , $filename, $mode);
    if ($status) {
        echo "Successfully written $filename to $temp'n";
        if (file_exists($filename))
        {
            $tempsize = filesize ($temp);
            if ($filesize==$tempsize)
            {
                echo "file size is the same with the one we have here'n";
                return;
            }
        }
        while(false);
        //unlink ($filename);
        rename ( $temp , $filename );
        echo "Succesfully update $filename 'n";     
    } else {
        echo "There was a problem'n";
    }
}

我目前的解决方案是在重命名前睡5分钟。

我想要更好的解决方案。但这绝对是一个答案