Закачать файлы в многопотоке

  • Автор темы Автор темы Evgeny76
  • Дата начала Дата начала

Evgeny76

Client
Регистрация
11.09.2015
Сообщения
193
Реакции
88
Баллы
28
Всем привет!
Задача в следующем:
Есть папка с файлами, необходимо брать из папки по одному файлу и заливать на определенный сайт. После чего делаем проверку по определенному слову на сайте удачно ли произошла загрузка или нет. По итогам проверки, файл кладем либо в папку успешные либо в неуспешные.
С однопотоком проблем нет. Для того чтобы работало в многопотоке сделал следующее: создал ещё одну папку "temp", беру список файлов с основной папки, со списка беру первую строку с полным путем к файлу, переношу его в папку temp, и уже с этой папки беру файл для закачки на сайт. Шаблон работает, но всё равно иногда проскакивают ошибки, как я думаю в некоторых случаях когда один поток взял из списка файл и ещё не успел его перенести во временную папку, то второй поток тоже может успеть взять его.
Подскажите пожалуйста, правильно ли я делаю? Или есть какое либо другое решение этой задачи?
Спасибо.
 
можно в список получить все пути к файлам, потом брать первую строку с удалением, в которой будет полный путь к файлу и обрабатывать файл. Таким образом можно обойтись без папки темп.
 
А список разве один и тот же будет на все потоки?
 
А список разве один и тот же будет на все потоки?
Если ставить эти две галки, что на скрине, в свойствах списка, то список будет один на все потоки. Он как бы копируется в оперативу зенки, и работа с ним происходит уже оттуда - с учетом изменений для всех потоков!
http://joxi.ru/4AkvYN0F6LKe2q
 
  • Оценить
Реакции: Evgeny76 и ZennoScript
Нутром понимал, что можно сделать как-то проще, но двухнедельного опыта пока не хватает )
ZennoScript, evgen_po спасибо большое!
 
Нарисовалась одна проблемка со списком:
как только запускается второй поток, то он тоже берет список и добавляет его к существующему в конец. Хотя первые строки, как и положено удаляются. В итоге после нескольких повторов работы шаблона, файл, привязанный к списку разрастается до огромных размеров.
 
Что-то Вы неправильно делаете. Строки из списка нужно брать построчно с удалением. Посмотрите, правильный ли у Вас указан разделитель в свойствах списка.
Если проблема остается, опишите ее более подробно, что и как делаете, желательно с примерами и зарисовками!))
 
Ну я делал на ГЕТ запросах довландер, (в списке брал рандомные строки - линки) при больших скоростях попадались дубли скаченых файлов.
 
Делаю вот так:
7786853.jpg
 
Немного не правильно у Вас логика настроена. У Вас получается при каждом запуске (потоке) будут дописываться одинаковые данные в Список 1, так как Вы и описывали.
Делайте так:
У Вас Список 1 привязан к какому-то конкретному файлу. Проверяйте, если этот файл уже существует, то не нужно заново получать список файлов в предыдущем шаге и еще раз их ложить в существующий список.
А если еще этого файла нет, то тогда получайте в него список файлов.
Подумайте сами, у Вам при каждом запуске заново берется один и тот же список файлов и засовывается в список 1 - такого быть не должно!
 
  • Оценить
Реакции: Evgeny76
Всё заработало как надо, ещё раз всем спасибо
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)