Нужно отправлять на сайт много-много файлов. Использую
ФТПСоединение.Записать(ИмяВременногоФайла, ИмяФайлаНаСервере);
После отправки нескольких файлов - вылетает ошибка
Ошибка работы с Интернет: ftp://блаблабла.com Couldn't connect to server
Если пробовать соединиться сразу же - не соединяется. Если после ошибки поставить Предупреждение на 5 секунд - то отправка возобновляется - но опять на 1-5 файлов, не больше.
Через Total Commander отправляются файлы сотнями, без проблем. В пассивном режиме соединение не проходит. Пробовал на двух провайдерах. Что еще это может быть?
Работа с ФТП. (Начнем, пожалуй:) )
Re: Работа с ФТП. (Начнем, пожалуй:) )
С таймаутом игрался?
И я бы для начала поставил tcp/ip-сниффер какой-нить и посмотрел, что там и как отправляется.
И я бы для начала поставил tcp/ip-сниффер какой-нить и посмотрел, что там и как отправляется.
Re: Работа с ФТП. (Начнем, пожалуй:) )
Classic писал(а):Ошибка работы с Интернет: ftp://блаблабла.com Couldn't connect to server
насколько я знаю - ошибка "Couldn't connect to server" - это ошибка клиентского процесса соединяющегося с сервером
по причинам:
1. либо клиент послал некоректную команду и сервер счел это ошибкой и соединение "пристрелил"
2. либо на самом сервере есть хитрые (но некоректные) настройки, что приводит фактически к аналогу 500 ошибки у http - но если Тотал работает значит не в этом дело
я обычно делал следующее
использовал грязный хак (иногда помогает) - вставить дополнительную избыточную команду УстановкаТекущегоКаталога()
FTPConnection.SetCurrentDirectory(cDir);
FTPConnection.Write(tempFile, remoteFile);
FTPConnection.SetCurrentDirectory(cDir);
а уже потом игрался с таймаутами и снифером
P.S. Кстати Тотал тоже использует такую же схему - если посмотреть его вывод команд: можно увидеть частый вызов PWD, что фактически аналогично 1С-овскому методу ТекущийКаталог() если мне память не изменяет
Re: Работа с ФТП. (Начнем, пожалуй:) )
Classic писал(а):ФТПСоединение.Записать(ИмяВременногоФайла, ИмяФайлаНаСервере);
а кстати каков у тебя жизенный цикл ФТПСоединения
примерно такой ?
ФТПСоединение = Новый FTPСоединение(<Параметры>)
Для каждого отправкаФайла из МассивОтправки Цикл
ФТПСоединение.Записать(отправкаФайла.ИмяВременногоФайла, отправкаФайла.ИмяФайлаНаСервере);
КонецЦикла
ФТПСоединение = Неопределено;
просто чтобы исключить ситуацию если на каждый файл создается отдельное соединение
---
update:
и еще может быть важен размер файлов - иногда бывает разрыв соединения именно из-за размеров в связке с антивирусами и файерволами.
Re: Работа с ФТП. (Начнем, пожалуй:) )
Пока это все на моем буке, антивируса нет. Соединение одно на весь массив файлов.
На каждый файл соединение не создается. Интересно, что от того, выбран-ли флаг флОбновитьСуществующие ничего не зависит, все равно соединение теряется.
значимый код выглядит так:
Попробовал в цикл вставить
ФТПСоединение.УстановитьТекущийКаталог("/");
ФТПСоединение.УстановитьТекущийКаталог(КаталогКартинок);
- рвется именно на этом.
А что значит, играться таймингами? Это где?
На каждый файл соединение не создается. Интересно, что от того, выбран-ли флаг флОбновитьСуществующие ничего не зависит, все равно соединение теряется.
значимый код выглядит так:
Код: Выделить всё
ФТПСоединение.УстановитьТекущийКаталог("/");
ФТПСоединение.УстановитьТекущийКаталог(КаталогКартинок);
ВыборкаДетальныеЗаписи.Сбросить();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Изображение = ПолучитьИзображение(ВыборкаДетальныеЗаписи);
Если Изображение = Неопределено Тогда
Продолжить;
КонецЕсли;
Расширение = ПолучитьРасширениеИзображения(Изображение);
ИмяФайлаНаСервере = ПолучитьИмяФайлаНаСервере(Изображение);
Если НЕ флОбновитьСуществующие Тогда
НайденныеФайлы = ФТПСоединение.НайтиФайлы(ИмяФайлаНаСервере, , Ложь);
Если НайденныеФайлы.Количество() <> 0 Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
Изображение.Записать(ИмяВременногоФайла);
ФТПСоединение.Записать(ИмяВременногоФайла, ИмяФайлаНаСервере);
КонецЦикла;
Попробовал в цикл вставить
ФТПСоединение.УстановитьТекущийКаталог("/");
ФТПСоединение.УстановитьТекущийКаталог(КаталогКартинок);
- рвется именно на этом.
А что значит, играться таймингами? Это где?
Re: Работа с ФТП. (Начнем, пожалуй:) )
Classic писал(а):...
А что значит, играться таймингами? Это где?
...
FTPСоединение (FTPConnection)
Таймаут (Timeout)
Использование:
Только чтение.
Описание:
Тип: Число.
Таймаут в секундах на установку FTP соединения и выполнение FTP операций.
Доступность:
Тонкий клиент, сервер, толстый клиент, внешнее соединение.
а еще проверь что тебе скажет ping -n 100 blabla.com одновременно с запуском кода обработки работы с ftp
---
update: напомню родное ФТПСоедиенине тестировалось в работе только с IIS, а также умеет работать только с прозрачными прокси.
Re: Работа с ФТП. (Начнем, пожалуй:) )
Ответ от : число байт=32 время=11мс TTL=58
Ответ от : число байт=32 время=11мс TTL=58
Ответ от : число байт=32 время=14мс TTL=58
Ответ от : число байт=32 время=11мс TTL=58
Ответ от : число байт=32 время=11мс TTL=58
11 мс, до 15 - очень редко.
Про Таймаут все равно не понял. Там 0, и поле только для чтения.
Попробовал после каждого чиха вставлять ФТПСоединение.ТекущийКаталог(); Попробовал увеличить паузу до 3х секунд. Все тоже самое. Скопировал тестовую дбф базу через тотал - 200 файлов, без проблем.
upd. Попробовал создавать соединение ради каждого файла. Стало хуже, на втором рвется.
Re: Работа с ФТП. (Начнем, пожалуй:) )
cj
Значит у тебя проблема низкоуровневая - и тут поможет снифер как советовал Александр.
Где-то проскакивала информация что 1С советует WireShark для тестов - видимо на партнерке.
Чей сервак то хоть - ftp который.
Classic писал(а):Ответ от : число байт=32 время=11мс TTL=58
Ответ от : число байт=32 время=11мс TTL=58
Ответ от : число байт=32 время=14мс TTL=58
Ответ от : число байт=32 время=11мс TTL=58
Ответ от : число байт=32 время=11мс TTL=58
11 мс, до 15 - очень редко.
Про Таймаут все равно не понял. Там 0, и поле только для чтения.
Попробовал после каждого чиха вставлять ФТПСоединение.ТекущийКаталог(); Попробовал увеличить паузу до 3х секунд. Все тоже самое. Скопировал тестовую дбф базу через тотал - 200 файлов, без проблем.
upd. Попробовал создавать соединение ради каждого файла. Стало хуже, на втором рвется.
Значит у тебя проблема низкоуровневая - и тут поможет снифер как советовал Александр.
Где-то проскакивала информация что 1С советует WireShark для тестов - видимо на партнерке.
Чей сервак то хоть - ftp который.
Re: Работа с ФТП. (Начнем, пожалуй:) )
Клиент заказал сайт у третьей конторы. Они предоставляют как разработку дизайна, так и хостинг.