2010-04-06 2 views
0

Я подключаюсь к ftp-серверу, на котором у меня нет контроля, и я уверен, что использует что-то старое и устаревшее из-за других проблем, с которыми я столкнулся.PHP - ftp_get работает только один раз

Я просто использую этот код в цикле, чтобы получить все файлы в каталоге.

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

В первый раз, все идет хорошо, но после того, что я получаю эту ошибку брошенную для каждого файла я пытаюсь получить: «Существует уже активная транзакция»

Я попытался как пассивный & активным , а также неблокирующийся получить не повезло. Это тот же самый код, который я использую для подключения к другим FTP-серверам, и получить файлы без проблем.

редактировать: Как ни странно, закрывая соединение, спать 3 секунды, и создать новое соединение между каждым получить дает те же результаты ...

EDIT: решаемые. Оказывается, несмотря на ошибки, файлы все еще попадают. Блок catch просто ломал ошибку, поэтому я этого не осознавал. Я просто проигнорирую эту ошибку.

+1

Ваше название вопроса относится к get, в то время как ваше тело вопроса относится к помете. Какой из них прав? –

+0

Получите, извините. Исправлена. –

ответ

0

Похоже, что «активная транзакция» может означать, что она по-прежнему переносит данные, когда вы пытаетесь снова использовать это соединение. Возможно, воспользуйтесь функцией sleep() после того, как она поместится и получит время завершения транзакции, и посмотрите, не изменилось ли это. Вам не нужно делать это для php, но я бы попробовал это просто, чтобы исключить это как возможную проблему.

+0

Я пробовал спать несколько секунд между файлами без везения. –

+0

Я бы подумал, что несколько секунд будут охватывать вас, если это проблема, но зависит от того, насколько велика ваша передача. Если это большой файл, может потребоваться несколько минут. – user299416

1

Попробуйте использовать ftp_fget и сохраните файл, прежде чем пытаться получить еще один.

+0

Не повезло с fget –

+0

Dang. Можете ли вы опубликовать весь фрагмент кода, с которым работаете, чтобы мы могли видеть логику, связанную с вызовом 'ftp_get()'? –

+0

Оказывается, я идиот. На самом деле mysql давал эту ошибку из-за блуждающей строки кода, которая была прокручена в другом методе, но все еще попадает в один и тот же блок. :( –

Смежные вопросы