Success и Fail =)



  • Я наверное уже раз 10 спрашивал, но опять не понял как сделать. Вобщем, предположим, что у нас ресурсов с избытком (мыл, прокси и т.д.). Но нужно зарегистрировать ровно 5 аккаунтов. Я могу сделать, что если аккаунты зарегистрирован, то выполнять действие Success, и соответственно это же количество ставить в настройках скрипта. Но дело в том, что как только, скажем, 5 success сработало, то скрипт прерывается, и те потоки, которые начали работать - тоже. А там потоки принимают смс, и соответственно какое-то количество принятых смс пропадает. Как надо правильно делать?



  • По идее, если допустим, нужно зарегистрировать 10 аккаунтов, у нас 3 потока, то 3 потока сделают по 3 выполнения, потом должен остаться один поток, который сделает 10е. Или сейчас в программе не так?



  • @DrPrime да вроде не так. Я вот сделал такой проект. Сначала поток пишет в лог "аккаунт начал регистрироваться", потом пауза рандомная, потом пишет в лог "Аккаунт зарегистрирован". И выставил зарегать 8 аккаунтов и 5 потоков. В итоге у меня в логе 8 аккаунтов зарегано, а записей "аккаунт начал регистрироваться" аж 12. Т.е. 4 потока прервались на середине.

    [18:36:59] Поток №1 : аккаунт начал регистрироваться
    [18:36:59] Поток №2 : аккаунт начал регистрироваться
    [18:36:59] Поток №3 : аккаунт начал регистрироваться
    [18:36:59] Поток №4 : аккаунт начал регистрироваться
    [18:36:59] Поток №5 : аккаунт начал регистрироваться
    [18:37:10] Поток №2 : Аккаунт зарегистрирован
    [18:37:10] Поток №2 : Поток выполнен успешно с сообщением "Зарегали"
    [18:37:10] Поток №2 : аккаунт начал регистрироваться
    [18:37:13] Поток №5 : Аккаунт зарегистрирован
    [18:37:13] Поток №5 : Поток выполнен успешно с сообщением "Зарегали"
    [18:37:13] Поток №5 : аккаунт начал регистрироваться
    [18:37:15] Поток №1 : Аккаунт зарегистрирован
    [18:37:15] Поток №1 : Поток выполнен успешно с сообщением "Зарегали"
    [18:37:15] Поток №1 : аккаунт начал регистрироваться
    [18:37:16] Поток №3 : Аккаунт зарегистрирован
    [18:37:16] Поток №3 : Поток выполнен успешно с сообщением "Зарегали"
    [18:37:16] Поток №3 : аккаунт начал регистрироваться
    [18:37:18] Поток №4 : Аккаунт зарегистрирован
    [18:37:18] Поток №4 : Поток выполнен успешно с сообщением "Зарегали"
    [18:37:18] Поток №4 : аккаунт начал регистрироваться
    [18:37:25] Поток №2 : Аккаунт зарегистрирован
    [18:37:25] Поток №2 : Поток выполнен успешно с сообщением "Зарегали"
    [18:37:25] Поток №2 : аккаунт начал регистрироваться
    [18:37:25] Поток №5 : Аккаунт зарегистрирован
    [18:37:25] Поток №5 : Поток выполнен успешно с сообщением "Зарегали"
    [18:37:25] Поток №5 : аккаунт начал регистрироваться
    [18:37:29] Поток №3 : Аккаунт зарегистрирован
    [18:37:29] Поток №3 : Поток выполнен успешно с сообщением "Зарегали"
    [18:37:29] Поток №1 : Поток выполнен успешно с сообщением "Ok"
    [18:37:29] Поток №2 : Поток выполнен успешно с сообщением "Ok"
    [18:37:29] Поток №4 : Поток выполнен успешно с сообщением "Ok"
    [18:37:29] Поток №5 : Поток выполнен успешно с сообщением "Ok"
    [18:37:29] Скрипт завершен корректно



  • @lev Да, так и есть. Если достигнуто количество успехов/неудач все потоки прерывают свою работу.



  • @support меня уже который месяц заботило это, но думаю ладно. А тут уже не просто ресурсы теряются, а смски принимаются, но не задействуются. Я так и не понял, как грамотно это делать. только если как то через глобальные переменные сравнивать что ли, а success вообще не использовать.



  • @lev Я бы сделал 2 глобальные переменные: количество успехов и количество завершенных потоков.
    Когда первая достигнет нужного значения - начать завершать потоки.
    Когда вторая - завершить скрипт.

    В будущем сделаю отдельную настройку.



  • @support Я не понял сути, что имеется ввиду под 'под начинаем завершать потоки'. В zennoposter тоже с многопотоком не все радужно. Но у них есть графа 'Сколько делать' и 'Количество потоков'. Так вот, он запустит в сумме столько потоков, сколько в графе 'Сколько делать'. Здесь есть конечно минус в том, что если поток не зарегает аккаунт, то в итоге аккаунтов будет меньше, чем надо. Но зато ничего не теряется. Я вот думаю по такому принципу и делать. Т.е. объявляю глобальную переменную в ноль в Application Start и с каждым запущенным потоком увеличиваю на 1 в самом начале. И как только глобальная переменная достигнет количества аккаунтов, которые нужно зарегистрировать, то все запущенные потоки отправляю в вечный сон. Но это еще надо и отслеживать, ни все ли потоки в вечном сне. . .



  • @lev

    Но это еще надо и отслеживать, ни все ли потоки в вечном сне. . .

    Да, для этого можно создать еще одну глобальную переменную и увеличивать ее на 1 при каждой отправке потока в сон. Когда эта новая переменная достигнет количества потоков, вызывать "Прервать Скрипт".



  • @lev Исправлено в 16.5.0. Скрипт будет ждать пока все начатые потоки не завершаться. Остановить мгновенно можно вызвав действие "Прервать скрипт" с параметром "Завершить скрипт мгновенно."


Log in to reply
 

  • 3
  • 2
  • 1
  • 4
  • 8
  • 3
  • 4
  • 11