2014-04-11 122 views
0

我必須通過ftp使用php來傳輸文件。這些文件很大(也超過500MB)。 所以我想用ftp來使用php。php通過ftp大量上傳

<?php 
// connect and login to FTP server 
$ftp_server = "ftp.example.com"; 
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server"); 
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass); 

$file = "localfile.txt"; 

// upload file 
if (ftp_put($ftp_conn, "serverfile.txt", $file, FTP_ASCII)) 
    { 
    echo "Successfully uploaded $file."; 
    } 
else 
    { 
    echo "Error uploading $file."; 
    } 

// close connection 
ftp_close($ftp_conn); 
?> 

我必須知道在ftp傳輸中是否也考慮超時。 如果我通過代碼寫入通過php頁面像upload.php傳輸文件,我有Web服務器上的執行時間限制設置?

回答

0

在服務器端啓用允許恢復文件上傳的功能。

從php中,你可以使用system()或exec()等函數,通過command_line選項調用ftp。

而且,是的,在php中有以下限制:max_upload_size,max_execution_time,max_post_size等。 如果需要,您將不得不將整個過程分成幾個步驟,重新加載頁面。

+0

所以你說的PHP和Ajax我可以解決這個問題?例如用XMLHttpRequest對象... – user3298358

+0

你誤會了我。我告訴你的是,在php中使用命令行語法,意思是使用「system('通過unix命令行調用ftp upload')」來調用ftp,這將確保你的文件將被上傳。您需要知道您的本地ftp程序以及如何通過命令行調用它。 http://php.net/manual/en/function.system.php你可以避免php的時間限制,將它們設置爲0,並且在php端使用特殊的中止 - 即使超過了時間限制,啓動的腳本也會繼續執行。 http://php.net/manual/en/function.ignore-user-abort.php – Toly