下载文件然后重命名

时间:2015-09-27 01:51:31

标签: php ftp

我决定只通过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";
    }
}

1 个答案:

答案 0 :(得分:0)

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

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