PHP - ftp_get работает только один раз - PullRequest
0 голосов
/ 06 апреля 2010

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

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

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

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

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

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

РЕДАКТИРОВАТЬ: Решено. Оказывается, что, несмотря на ошибки, файлы все еще получают. Блок catch просто перехватывал ошибку, поэтому я ее не осознавал. Я просто проигнорирую эту ошибку.

Ответы [ 2 ]

1 голос
/ 06 апреля 2010

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

0 голосов
/ 06 апреля 2010

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

...