- Регистрация
- 23.10.2017
- Сообщения
- 134
- Благодарностей
- 2
- Баллы
- 18
Всем привет! Столкнулся со следующей проблемой: я спамлю в ЛС на довольно большом сайте. В начале проекта подгружается рандомный аккаунт, который спамит. В списке, привязанном к txt файлу находятся постоянно обновляемые юзеры (раз в минут 10 список удаляется и в него закидываются новые, "актуальные" юзеры). Каждый раз, как проект отошлет письмо (с момента взятия юзера до окончания проекта - примерно 20-25 сек), он добавляет юзера в "Базу для сравнения", чтобы потом, сравнивая с этой базой, можно было понять, отсылал ли я ему уже или нет. В PM это выглядит так:
Если кол-во юзеров меньше 17, то я беру случайного и смотрю, есть ли совпадения переменной с логином юзера в "Базе для сравнения". Если есть, то удаляем его и берем нового, если нет, то отсылаем ему сообщение. Код в кубике "Проверяем, есть ли он в базе":
НО: в такой системе есть ПРОБЛЕМА: когда я ставлю 3-4 потока, то у меня в "Базе для сравнения" образуются одинаковые логины (по 2-3 штуки иногда подряд), что означает что одному и тому же юзеру разные аккаунты шлют письмо, что мне очень не надо. Нужно, чтобы я слал только по одному письму каждому человеку. Я не могу понять почему это происходит, но, возможно, это из-за того, что иногда txt файл не успевает обновиться и поток не успевает увидеть юзера в "Базе для сравнения", хотя предыдущий поток уже отправил сообщение этому человеку.
Подскажите, кто знает, как можно усовершенствовать мою систему, или, я предполагаю, что есть намного легче и эффективнее способ отсылать сообщения, не повторяясь.
Если кол-во юзеров меньше 17, то я беру случайного и смотрю, есть ли совпадения переменной с логином юзера в "Базе для сравнения". Если есть, то удаляем его и берем нового, если нет, то отсылаем ему сообщение. Код в кубике "Проверяем, есть ли он в базе":
// берем из переменной текст, который надо искать
var textContains = project.Variables["SMS"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["БАЗА ДЛЯ СРАВНЕНИЯ"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
for(int i=0; i < sourceList.Count; i++)
{
// читаем строку из списка
var str = sourceList;
// проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
if (str.Contains(textContains))
{
return "yes";
}
}
}
// если ничего не нашли возвращаем "no"
return "no";
var textContains = project.Variables["SMS"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["БАЗА ДЛЯ СРАВНЕНИЯ"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
for(int i=0; i < sourceList.Count; i++)
{
// читаем строку из списка
var str = sourceList;
// проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
if (str.Contains(textContains))
{
return "yes";
}
}
}
// если ничего не нашли возвращаем "no"
return "no";
НО: в такой системе есть ПРОБЛЕМА: когда я ставлю 3-4 потока, то у меня в "Базе для сравнения" образуются одинаковые логины (по 2-3 штуки иногда подряд), что означает что одному и тому же юзеру разные аккаунты шлют письмо, что мне очень не надо. Нужно, чтобы я слал только по одному письму каждому человеку. Я не могу понять почему это происходит, но, возможно, это из-за того, что иногда txt файл не успевает обновиться и поток не успевает увидеть юзера в "Базе для сравнения", хотя предыдущий поток уже отправил сообщение этому человеку.
Подскажите, кто знает, как можно усовершенствовать мою систему, или, я предполагаю, что есть намного легче и эффективнее способ отсылать сообщения, не повторяясь.