2010-04-06 62 views
0

我連接到一個我無法控制的ftp服務器,而且我很確定由於遇到其他問題而使用舊的和過時的東西。PHP - ftp_get只能工作一次

我只是在循環中使用此代碼來獲取目錄中的所有文件。

ftp_get($this->conn_id, $remote, $local, FTP_ASCII); 

第一次一切順利,但在那之後我得到這個錯誤拋出的每個文件我試圖讓:「已經有一個活躍的交易」

我都試過被動&活躍,以及一個非阻塞獲得沒有運氣。這是我用來連接到其他FTP服務器並獲得沒有問題的文件完全相同的代碼。

編輯:奇怪的是,關閉連接,睡3秒,並創建一個新的連接之間的每一個得到得到相同的結果...

編輯:解決。結果發現,儘管存在錯誤,文件仍然存在。 catch塊只是捕捉錯誤,所以我沒有意識到。我會忽略那個錯誤。

+1

你的問題標題是指get,而你的問題身體是指put。哪一個是對的? – 2010-04-06 18:37:48

+0

得到,對不起。固定。 – 2010-04-06 19:05:21

回答

0

看起來好像「已經存在活動事務」可能意味着當您嘗試再次使用該連接時,它仍在傳輸數據。也許在put之後使用sleep()函數,並讓交易時間結束並查看是否有所作爲。你不應該這樣做的PHP,但我會嘗試它只是爲了排除它作爲一個可能的問題。

+0

我試圖在沒有運氣的文件之間睡幾秒鐘。 – 2010-04-06 18:55:44

+0

我認爲幾秒鐘會覆蓋你,如果這是問題,但它取決於你傳輸的文件有多大。如果它是一個大文件,它可能需要幾分鐘時間。 – user299416 2010-04-06 20:24:35

1

嘗試使用ftp_fget代替並在嘗試獲取另一個文件之前保存該文件。

+0

fget沒有運氣 – 2010-04-06 19:21:42

+0

當。你能發佈你的整個代碼片段嗎?所以我們可以看到圍繞'ftp_get()'調用的邏輯嗎? – 2010-04-06 19:37:42

+0

原來我是個白癡。這實際上是mysql給出了這個錯誤,因爲一個雜亂的代碼行在另一個方法中偷偷摸摸,但仍然在同一個塊中被捕獲。 :( – 2010-04-06 19:44:09