Снегопат

Обсуждение Снегопата
Текущее время: 29 мар 2024, 15:29

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Работа с ФТП. (Начнем, пожалуй:) )
СообщениеДобавлено: 01 дек 2011, 11:39 
Не в сети

Зарегистрирован: 24 авг 2011, 17:26
Сообщения: 154
Нужно отправлять на сайт много-много файлов. Использую
ФТПСоединение.Записать(ИмяВременногоФайла, ИмяФайлаНаСервере);

После отправки нескольких файлов - вылетает ошибка
Ошибка работы с Интернет: ftp://блаблабла.com Couldn't connect to server
Если пробовать соединиться сразу же - не соединяется. Если после ошибки поставить Предупреждение на 5 секунд - то отправка возобновляется - но опять на 1-5 файлов, не больше.
Через Total Commander отправляются файлы сотнями, без проблем. В пассивном режиме соединение не проходит. Пробовал на двух провайдерах. Что еще это может быть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с ФТП. (Начнем, пожалуй:) )
СообщениеДобавлено: 01 дек 2011, 12:20 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
С таймаутом игрался?
И я бы для начала поставил tcp/ip-сниффер какой-нить и посмотрел, что там и как отправляется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с ФТП. (Начнем, пожалуй:) )
СообщениеДобавлено: 01 дек 2011, 13:05 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2011, 08:20
Сообщения: 98
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: Работа с ФТП. (Начнем, пожалуй:) )
СообщениеДобавлено: 01 дек 2011, 13:11 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2011, 08:20
Сообщения: 98
Classic писал(а):
ФТПСоединение.Записать(ИмяВременногоФайла, ИмяФайлаНаСервере);


а кстати каков у тебя жизенный цикл ФТПСоединения

примерно такой ?

Цитата:
ФТПСоединение = Новый FTPСоединение(<Параметры>)
Для каждого отправкаФайла из МассивОтправки Цикл
ФТПСоединение.Записать(отправкаФайла.ИмяВременногоФайла, отправкаФайла.ИмяФайлаНаСервере);
КонецЦикла
ФТПСоединение = Неопределено;


просто чтобы исключить ситуацию если на каждый файл создается отдельное соединение

---
update:

и еще может быть важен размер файлов - иногда бывает разрыв соединения именно из-за размеров в связке с антивирусами и файерволами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с ФТП. (Начнем, пожалуй:) )
СообщениеДобавлено: 01 дек 2011, 14:51 
Не в сети

Зарегистрирован: 24 авг 2011, 17:26
Сообщения: 154
Пока это все на моем буке, антивируса нет. Соединение одно на весь массив файлов.
На каждый файл соединение не создается. Интересно, что от того, выбран-ли флаг флОбновитьСуществующие ничего не зависит, все равно соединение теряется.

значимый код выглядит так:
Код:
      ФТПСоединение.УстановитьТекущийКаталог("/");
      ФТПСоединение.УстановитьТекущийКаталог(КаталогКартинок);
      
      ВыборкаДетальныеЗаписи.Сбросить();
      Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
         Изображение = ПолучитьИзображение(ВыборкаДетальныеЗаписи);
         Если Изображение = Неопределено Тогда
            Продолжить;
         КонецЕсли;
         Расширение = ПолучитьРасширениеИзображения(Изображение);
         ИмяФайлаНаСервере = ПолучитьИмяФайлаНаСервере(Изображение);
         Если НЕ флОбновитьСуществующие Тогда
            НайденныеФайлы = ФТПСоединение.НайтиФайлы(ИмяФайлаНаСервере, , Ложь);
            
            Если НайденныеФайлы.Количество() <> 0 Тогда
               Продолжить;
            КонецЕсли;
         КонецЕсли;
         
         ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение);
         Изображение.Записать(ИмяВременногоФайла);
         ФТПСоединение.Записать(ИмяВременногоФайла, ИмяФайлаНаСервере);

      КонецЦикла;




Попробовал в цикл вставить
ФТПСоединение.УстановитьТекущийКаталог("/");
ФТПСоединение.УстановитьТекущийКаталог(КаталогКартинок);
- рвется именно на этом.

А что значит, играться таймингами? Это где?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с ФТП. (Начнем, пожалуй:) )
СообщениеДобавлено: 01 дек 2011, 15:02 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2011, 08:20
Сообщения: 98
Classic писал(а):
...
А что значит, играться таймингами? Это где?
...


Цитата:
FTPСоединение (FTPConnection)
Таймаут (Timeout)
Использование:

Только чтение.
Описание:

Тип: Число.
Таймаут в секундах на установку FTP соединения и выполнение FTP операций.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.


а еще проверь что тебе скажет ping -n 100 blabla.com одновременно с запуском кода обработки работы с ftp

---
update: напомню родное ФТПСоедиенине тестировалось в работе только с IIS, а также умеет работать только с прозрачными прокси.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с ФТП. (Начнем, пожалуй:) )
СообщениеДобавлено: 01 дек 2011, 15:27 
Не в сети

Зарегистрирован: 24 авг 2011, 17:26
Сообщения: 154
Цитата:
Ответ от : число байт=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: Работа с ФТП. (Начнем, пожалуй:) )
СообщениеДобавлено: 01 дек 2011, 20:58 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2011, 08:20
Сообщения: 98
cj
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: Работа с ФТП. (Начнем, пожалуй:) )
СообщениеДобавлено: 01 дек 2011, 21:08 
Не в сети

Зарегистрирован: 24 авг 2011, 17:26
Сообщения: 154
Клиент заказал сайт у третьей конторы. Они предоставляют как разработку дизайна, так и хостинг.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB