Снегопат https://snegopat.ru/forum/ |
|
Работа с ФТП. (Начнем, пожалуй:) ) https://snegopat.ru/forum/viewtopic.php?f=6&t=82 |
Страница 1 из 1 |
Автор: | Classic [ 01 дек 2011, 11:39 ] |
Заголовок сообщения: | Работа с ФТП. (Начнем, пожалуй:) ) |
Нужно отправлять на сайт много-много файлов. Использую ФТПСоединение.Записать(ИмяВременногоФайла, ИмяФайлаНаСервере); После отправки нескольких файлов - вылетает ошибка Ошибка работы с Интернет: ftp://блаблабла.com Couldn't connect to server Если пробовать соединиться сразу же - не соединяется. Если после ошибки поставить Предупреждение на 5 секунд - то отправка возобновляется - но опять на 1-5 файлов, не больше. Через Total Commander отправляются файлы сотнями, без проблем. В пассивном режиме соединение не проходит. Пробовал на двух провайдерах. Что еще это может быть? |
Автор: | orefkov [ 01 дек 2011, 12:20 ] |
Заголовок сообщения: | Re: Работа с ФТП. (Начнем, пожалуй:) ) |
С таймаутом игрался? И я бы для начала поставил tcp/ip-сниффер какой-нить и посмотрел, что там и как отправляется. |
Автор: | lustin [ 01 дек 2011, 13:05 ] |
Заголовок сообщения: | 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С-овскому методу ТекущийКаталог() если мне память не изменяет |
Автор: | lustin [ 01 дек 2011, 13:11 ] |
Заголовок сообщения: | Re: Работа с ФТП. (Начнем, пожалуй:) ) |
Classic писал(а): ФТПСоединение.Записать(ИмяВременногоФайла, ИмяФайлаНаСервере); а кстати каков у тебя жизенный цикл ФТПСоединения примерно такой ? Цитата: ФТПСоединение = Новый FTPСоединение(<Параметры>) Для каждого отправкаФайла из МассивОтправки Цикл ФТПСоединение.Записать(отправкаФайла.ИмяВременногоФайла, отправкаФайла.ИмяФайлаНаСервере); КонецЦикла ФТПСоединение = Неопределено; просто чтобы исключить ситуацию если на каждый файл создается отдельное соединение --- update: и еще может быть важен размер файлов - иногда бывает разрыв соединения именно из-за размеров в связке с антивирусами и файерволами. |
Автор: | Classic [ 01 дек 2011, 14:51 ] |
Заголовок сообщения: | Re: Работа с ФТП. (Начнем, пожалуй:) ) |
Пока это все на моем буке, антивируса нет. Соединение одно на весь массив файлов. На каждый файл соединение не создается. Интересно, что от того, выбран-ли флаг флОбновитьСуществующие ничего не зависит, все равно соединение теряется. значимый код выглядит так: Код: ФТПСоединение.УстановитьТекущийКаталог("/"); ФТПСоединение.УстановитьТекущийКаталог(КаталогКартинок); ВыборкаДетальныеЗаписи.Сбросить(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Изображение = ПолучитьИзображение(ВыборкаДетальныеЗаписи); Если Изображение = Неопределено Тогда Продолжить; КонецЕсли; Расширение = ПолучитьРасширениеИзображения(Изображение); ИмяФайлаНаСервере = ПолучитьИмяФайлаНаСервере(Изображение); Если НЕ флОбновитьСуществующие Тогда НайденныеФайлы = ФТПСоединение.НайтиФайлы(ИмяФайлаНаСервере, , Ложь); Если НайденныеФайлы.Количество() <> 0 Тогда Продолжить; КонецЕсли; КонецЕсли; ИмяВременногоФайла = ПолучитьИмяВременногоФайла(Расширение); Изображение.Записать(ИмяВременногоФайла); ФТПСоединение.Записать(ИмяВременногоФайла, ИмяФайлаНаСервере); КонецЦикла; Попробовал в цикл вставить ФТПСоединение.УстановитьТекущийКаталог("/"); ФТПСоединение.УстановитьТекущийКаталог(КаталогКартинок); - рвется именно на этом. А что значит, играться таймингами? Это где? |
Автор: | lustin [ 01 дек 2011, 15:02 ] |
Заголовок сообщения: | Re: Работа с ФТП. (Начнем, пожалуй:) ) |
Classic писал(а): ... А что значит, играться таймингами? Это где? ... Цитата: FTPСоединение (FTPConnection) Таймаут (Timeout) Использование: Только чтение. Описание: Тип: Число. Таймаут в секундах на установку FTP соединения и выполнение FTP операций. Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение. а еще проверь что тебе скажет ping -n 100 blabla.com одновременно с запуском кода обработки работы с ftp --- update: напомню родное ФТПСоедиенине тестировалось в работе только с IIS, а также умеет работать только с прозрачными прокси. |
Автор: | Classic [ 01 дек 2011, 15:27 ] |
Заголовок сообщения: | 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. Попробовал создавать соединение ради каждого файла. Стало хуже, на втором рвется. |
Автор: | lustin [ 01 дек 2011, 20:58 ] |
Заголовок сообщения: | Re: Работа с ФТП. (Начнем, пожалуй:) ) |
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 который. |
Автор: | Classic [ 01 дек 2011, 21:08 ] |
Заголовок сообщения: | Re: Работа с ФТП. (Начнем, пожалуй:) ) |
Клиент заказал сайт у третьей конторы. Они предоставляют как разработку дизайна, так и хостинг. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |