2015-09-27 35 views
-1

我決定只是通過ftp下載一個文件,然後將下載的文件重命名爲正確的名稱,而不是直接下載文件。這樣文件發生故障的時間就很少。下載一個文件然後重命名它

這裏是代碼

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

的「本質」我基本上得到了一個錯誤,指出文件$溫度是在使用所以不能重命名。

事情是下載完成。

我應該關閉文件還是什麼?如何告訴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"; 
    } 
} 

回答

0

我目前的解決方案,實際工作就是睡覺更名前5分鐘的更全面的版本。

我想要更好的解決方案。但這絕對是一個答案。

相關問題