2010-09-04 41 views
0

我意識到還有其他更直接的方式來進行FTP。但是,我特別需要能夠通過FTP在文件上使用fopen。以下代碼工作得很好:當通過FTP打開時控制fopen超時

$FTP="ftp://$FTPUser:[email protected]$FTPHost/$file_dest"; 
$fp=fopen($FTP, 'w'); 

問題是何時$ file_dest的路徑無效。例如,如果$ file_dest =「1/2/3/test.txt」。

如果1,2或3文件夾不存在,那麼fopen失敗需要90秒。

如何減少此超時?

+0

我退出投票結束重複。在這個副本中顯示的方法應該適用於1:1:http://stackoverflow.com/questions/2511225/how-to-get-fopen-to-timeout-properly – 2010-09-04 23:07:35

+0

另外一個問題是打開http,我試過了它似乎並不適用於ftp。 – Joshua 2010-09-04 23:19:18

回答

0

我會建議creating a stream context,但正如你所說,似乎沒有timeout選項的FTP協議那裏。

試試default_socket_timeout選項爲建議的here選項是否適用於FTP操作 - 我不完全確定。

如果這樣做不起作用,我不確定您是否不必使用proper FTP functions,這肯定會允許設置超時。

+0

我正在ftping的虛擬主機服務器沒有磁盤io privlidges,所以我無法從磁盤讀取數據。我只能訪問通過http發佈的文件內容。 ftp_put失敗,因爲源內容是文件,而不是字符串。許多網絡主機拒絕文件io(但完全支持ftp!),所以我需要介紹這種情況。 – Joshua 2010-09-05 01:49:52

+0

@Joshua如何使用數據包裝器作爲文件資源並從中讀取數據? http://www.php.net/manual/en/wrappers.data.php – 2010-09-05 09:08:49