BAS: вопросы новичка



  • Всем привет!

    Набросал простенький регер акков в одноклассниках, возник такой вопрос - возможно ли сделать так, чтобы каждый поток брал пачку фото из разных папок?
    Ресурс создал "Файлы из папки", но скрипт само собой всегда берет файлы из одной папки.
    Как можно решить эту проблему?



  • @Inwnew можно, уже не 1н раз обсуждалось
    https://www.google.com/search?q=site%3Acommunity.bablosoft.com+каждый+поток+своя+папка

    на заметку @support : нужно вынести этот вопрос в wiki, т.к. о нем часто спрашивают.



  • @out Спасибо за наводку, поиском по форуму не нашел эту тему. Попробую.



  • @out Добавил в faq



  • Ребят, нужна опять ваша помощь. Сделал чекер прокси простенький, отбираю им рабочие РФ прокси, из ссылки, там всего одна функция, которая при несовпадении условий или при ошибке вызывает сама себя.
    Работает вроде нормально, но вот в файл записывает почему-то не одну строку с прокси, а дублирует несколько раз (3-10 раз). Т.е. это все один поток добавляет.
    Пробовал и запись в файл (через расположение ресурса) и добавлением элемента, все равно косяк есть. Второй день уже форум изучаю, не нашел описания этой ошибки.

    Сам проект 0_1498082114108_check_proxy_post_get.xml



  • @Inwnew said in BAS: вопросы новичка:

    Ребят, нужна опять ваша помощь. Сделал чекер прокси простенький, отбираю им рабочие РФ прокси, из ссылки, там всего одна функция, которая при несовпадении условий или при ошибке вызывает сама себя.
    Работает вроде нормально, но вот в файл записывает почему-то не одну строку с прокси, а дублирует несколько раз (3-10 раз). Т.е. это все один поток добавляет.
    Пробовал и запись в файл (через расположение ресурса) и добавлением элемента, все равно косяк есть. Второй день уже форум изучаю, не нашел описания этой ошибки.

    Сам проект 0_1498082114108_check_proxy_post_get.xml

    1. Чтобы установить прокси, не обязательно парсить строку с прокси. Можно устанавливать прокси прямо прямо с портом в одну строку.
    2. Чтобы узнать страну по IP адресу, не обязательно парсить ответ какого-то сайта. Можно просто использовать функцию Сведения об ип. Это, также, дает возможность проверять работоспособность прокси уже на конкретном сайте. На whoer прокси может и работает, а вот на нужном нам сайте может быть забанен.
    3. Рекурсию удобнее использовать тогда, когда нужно зациклить что-то до тех пор, пока не выполнится какое-то условие. В твоем случае лучше использовать бесконечный цикл. А ещё лучше, проверять один прокси за один прогон потока. Программа сама завершит выполнение когда прокси в ресурсе закончатся.

    Причина записи дубликатов результатов, скорее всего, именно в рекурсии. При выходе из каждой внутренней итерации, снова выполняются какие-то условия, которые, дублируют записи.
    В первом if стоит галочка блок else. Не уверен, что так оставлять безопасно.
    Вообще, проблему можно решить использованием функции Удалить дубликаты, но, повторюсь, рекурсию тут использовать неэффективно.



  • @xclsv По сведениям об ип как-то не догадался, спасибо за наводку
    Эту функцию выдернул из другого скрипта, там вся работа идет в браузере, поэтому парсится строка из ресурса и помещается в переменную, чтобы потом в браузере использовать. Насчет If c оставленным блоком else это я видимо в запарке неправильно отредактировал (
    А насчет Удалить дубликаты - это я так понимаю сначала нужно ресурс в список загонять, потом уже в самом списке чистить и писать в файл?
    И как понять "один прокси за один прогон потока"? Значение успехов выставить 1, а значение неудач больше, чем строк в ресурсе? Если я буду проверять прокси в 20 потоков не получится так, что всего 20 прокси при совпадении условий будет записано в файл, а их больше 5к обычно?
    Все-таки непонятно, почему при рекурсии записывает несколько одинаковых строк?



  • @Inwnew said in BAS: вопросы новичка:

    А насчет Удалить дубликаты - это я так понимаю сначала нужно ресурс в список загонять, потом уже в самом списке чистить и писать в файл?

    Абсолютно верно.

    И как понять "один прокси за один прогон потока"? Значение успехов выставить 1, а значение неудач больше, чем строк в ресурсе? Если я буду проверять прокси в 20 потоков не получится так, что всего 20 прокси при совпадении условий будет записано в файл, а их больше 5к обычно?

    Убираем рекурсию. Выставляем число успехов и неудач в большое число. Наслаждаемся процессом. Совершенно не важно, сколько в ресурсе строк. Если неудач и успехов выставить больше, чем этих строк, скрипт не успокоится и будет перезапускать потоки снова и снова до тех пор, пока не обработает их все. Просто попробуй )

    Все-таки непонятно, почему при рекурсии записывает несколько одинаковых строк?

    Несколько одинаковых строк возникает по той причине, что при выходе из рекурсии выполняется второй if, который записывает в ресурс переменную, которая уже была записана на внутренней итерации. Таким образом, строк записывается столько, сколько раз сработала рекурсия вглубь. Теоретически, если исправить ошибку в if, будет работать нормально. Но гораздо разумнее будет сделать через цикл, а лучше через многопоток. Не навязываю. Рекурсия и циклы во многих случаях взаимозаменяемы. Просто тут важно понять, в каком случае использовать тот метод, который потенциально вызовет меньшее количество ошибок.



  • @xclsv Cпасибо за разъяснение, буду и так и так пробовать.
    Т.е. в рекурсии If получается нужно сделать один и прописать там все условия, в т.ч. и [[WAS_ERROR]] ? Рекурсию я просто использую в других скриптах, чтобы нужные прокси отобрать.



  • @Inwnew said in BAS: вопросы новичка:

    @xclsv Cпасибо за разъяснение, буду и так и так пробовать.
    Т.е. в рекурсии If получается нужно сделать один и прописать там все условия, в т.ч. и [[WAS_ERROR]] ? Рекурсию я просто использую в других скриптах, чтобы нужные прокси отобрать.

    Либо так, либо сделать так, чтобы оба if никак не смогли выполниться. Через блок else ещё можно.
    Попробуй второй if выставить до первого. Тогда он сначала запишет прокси в ресурс, а уже потом войдет вызовет функцию, которая, возможно, запишет уже другой прокси. А при выходе из нее, записывать ничего не надо будет.


Log in to reply
 

  • 10
  • 42
  • 6
  • 1
  • 2
  • 3
  • 79
  • 9