2013-08-29 118 views
0

我必須使用cron將文件從linkshare服務器下載到我的服務器。使用php文件大小問題從ftp下載文件

如果文件大小小於2GB,那麼每件事情都是完美的,但如果超過,則無法下載。下面

$ftp_server = "***.*******.com"; 
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 
$login_result = ftp_login($conn_id, '******', '*******'); 
$ret = ftp_nb_get($conn_id, $localfile, $serverfile, FTP_BINARY); 
    while ($ret == FTP_MOREDATA) { 
     // Do whatever you want 
     echo "."; 
     // Continue downloading... 
     $ret = ftp_nb_continue($conn_id); 
    } 
    if ($ret != FTP_FINISHED) { 
     echo "There was an error downloading the file..."; 
     exit(1); 
    } 

感謝

代碼被提前給出了

+0

我懷疑是LinkShare的,FTP,和cron都是這裏無關緊要。您的PHP版本是否瞭解如何寫入大於2 GB的文件?有時候事情需要特殊的構建選項來支持大文件。 –

+0

我也是這樣想的。是否有任何方法,我可以使用ftp_get方法下載文件塊 – Krishna

回答

0

這是我的代碼從鏈路共享FTP獲取所有文件

<?php 
session_start(); 
$i = $_REQUEST['i']; 
if($i==""){ 
    $i=0; 
    $source_dir=("linkshare"); 
    $source_folder=dir($source_dir); 
    while($files_list=$source_folder->read()) 
    { 
     if ($files_list!= "." && $files_list!= "..") 
     { 
     $pat="linkshare/"; 
      unlink($pat.$files_list); 
     } 
     if($files_list!="") 
     { 
      $pat="linkshare/"; 
      unlink($pat.$files_list); 
     } 


    } 
} 

$destinationnameeeeee = "linkshare/"; 
    ini_set("max_execution_time",300000000000000000); 

    $ftp_server = ''; //ftp server name 
    $ftp_user_name = ''; //ftp user name 
    $ftp_user_pass = ''; //ftp user password 

    $conn_id = ftp_connect($ftp_server); 
    // login with username and password 
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
    $source_folder = ftp_nlist($conn_id, "."); 
    foreach($source_folder as $folder_list) 
    { 
     $folderlisting = explode("_",$folder_list); 
     $folders_list[]= $folder_list;   
    } 

     $_SESSION['folder_list'] = $folders_list; 
     //print_r($folders_list); 
     $folder_count=count($_SESSION['folder_list']); 

     $cur_folder = $_SESSION['folder_list'][$i]; 
     $source_file = str_replace('.lmp', '', $_SESSION['folder_list'][$i]); 
     $destination_file = $destinationnameeeeee.str_replace('.lmp', '', $_SESSION['folder_list'][$i]); 
     echo $destination_file; 

     if ((!$conn_id) || (!$login_result)) 
     { 
      echo "<br />FTP connection has failed!"; 
      echo "<br />Attempted to connect to $ftp_server for user $ftp_user_name"; 
      exit; 
     } 
     else 
     { 
      echo "<br />Connected to $ftp_server, for user $ftp_user_name"; 
     } 

    // download the file 
    $download = ftp_get($conn_id, $destination_file, $source_file, FTP_BINARY); 

    // check download status 
    if (!$download) 
    { 
     echo "<br />FTP download has failed!"; 
    } 
    else 
    { 
     echo "<br />Downloaded $source_file from $ftp_server as $destination_file"; 
     //if($i<=$folder_count) 
    if($i>=0) 
    { 
     $i=$i+1; 
    } 

    if($i==8) 
    { 
     exit; // 8 file only now download if you want to extent yourself  
    } 

     header("Location:ftpget.php?i=$i"); 
    } 

    ftp_close($conn_id); 
    ?> 

我可以加載同一個文件的每一個文件後下載時間。

+0

下載在我的最終工作正常,但如果文件大小超過2 GB,並且我認爲你沒有在你的代碼中解決這個問題,我有問題。 – Krishna

+0

如果文件大小超過2 GB,最新的問題是什麼。文件不下載? –

+0

文件正在下載,但當2 GB下載完成時進程停止 – Krishna