2010-04-06 66 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