Счетчик: Значения в текстовом файле

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Поделитесь решением под много поток у кого есть. Нужно получать\хранить значения счетчика в текстом файле.
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 055
Благодарностей
6 482
Баллы
113
а в чем проблема?
опиши логику шаба подробнее
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
если не знаешь как сделать или трудно, самый простой выход положить в список цифры, каждый поток берёт рандомно или первую с удалением и ложит в список гуд если отработал, какие тут трудности ?
это я к тому сказал если лень по форуму искать или в гугле, то вот так делай
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
а в чем проблема?
опиши логику шаба подробнее
Да надо нагенерировать определенное кол-во профилей, для этого надо запускать шаблон постоянно для генерации нового профиля.

Нужен счетчик данные которого будут храниться в файле. Его логика такова.

1. берем значение из списка, кладем его в переменную.
2. увеличиваем это значение.
3. записываем его обратно в список.

Список привязан к файлу.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
если не знаешь как сделать или трудно, самый простой выход положить в список цифры, каждый поток берёт рандомно или первую с удалением и ложит в список гуд если отработал, какие тут трудности ?
При много потоке проблемы будут если ты про обычные экшены.
это я к тому сказал если лень по форуму искать или в гугле, то вот так делай
Искал, но не нашел ничего подходящего.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
есть такой кубик в зенке, повторить в цикле
При много потоке проблемы будут если ты про обычные экшены.

Искал, но не нашел ничего подходящего.
да ладно, ты мне не придумывай сказки, все хотят одну строку, ты для начала тогда свой шаб выложи, покажи свои труды что сделал
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113

backoff

Client
Регистрация
20.04.2015
Сообщения
6 055
Благодарностей
6 482
Баллы
113
Да надо нагенерировать определенное кол-во профилей, для этого надо запускать шаблон постоянно для генерации нового профиля.
эм...
а зачем конфиг вообще нужен, если запускается только новые профили?
вместо конфиг файла, для такого шаба, советую сделать таблицу, где в нужном столбике в значении "статус" будешь прописывать статус профиля
типа
done
create
bad ну и тп
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
эм...
а зачем конфиг вообще нужен, если запускается только новые профили?
вместо конфиг файла, для такого шаба, советую сделать таблицу, где в нужном столбике в значении "статус" будешь прописывать статус профиля
типа
done
create
bad ну и тп
Так то да, но мне надо тупо по счетчику работать.
 

ebrwebrw

Client
Регистрация
20.08.2018
Сообщения
221
Благодарностей
164
Баллы
43
Был бы ты новичок я бы написал следующее:

В чем проблема проверять колво готовых профилей в папке?
Едрить скрин, а что качества получше в магазине не было? не завезли?:D

upload_2019-1-23_14-13-23.png
Но если нужно прям сохранять в фаил колво профилей то
список с привязкой к файлу, проверяем любым доступным способом колво готовых профилей, кидаем их в фаил
ну и проверяем цифру в файле

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

backoff

Client
Регистрация
20.04.2015
Сообщения
6 055
Благодарностей
6 482
Баллы
113
но мне надо тупо по счетчику работать
ну тогда логика такая

  1. создали конфиг файл, в нем указали 0
  2. после создания профиля (удачного) берем значение из конфига, прибавляем 1, полученное значение записываем обратно в конфик
  3. запись обратно в файл надо делать через LOCK чтобы в этот момент не было, что записывает другой проект в тот же файл другое значение
а вот по локу уже не подскажу, это на шарпе надо делать, искал у себя, но нет такого, есть лок списков, но он тут не нужен
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Но из за того что опыта у тебя поболее моего должно быть, я походу чего то не понимаю и написал хуйню
Именно, в точку! :D
Бог ты мой, ну зачем фантазировать то если задан конкретный вопрос. То шаб им нужен, то проблему нашли...

после создания профиля (удачного) берем значение из конфига, прибавляем 1, полученное значение записываем обратно в конфик
Тут будет чехорда в много потоке. Надо весь процесс лочить - получение, увеличение, запись.

это на шарпе надо делать
По этому и задал в этом разделе вопрос.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
а зачем лок делать ? ну и пусть пишит в разноброс, на последнем потоке который просто будет завершать сделать по убыванию или по возрастанию. зачем лишний лок, лок хоть и работает миллисенду но тоже считай что тормоз потоку, меньше локов используйте, держи в памяти, а потом за раз в файл кидай что бы не обращаться к диску милион раз
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 055
Благодарностей
6 482
Баллы
113
По этому и задал в этом разделе вопрос.
ааа сорян, даже не обратил внимание на это...
дописал бы, что нужен сниппет лока записи в текстовый файл в названии
сразу бы запили ответ.. а так видишь сколько народу размышляет :-)
правильно составляй текст )))
 
  • Спасибо
Реакции: one

backoff

Client
Регистрация
20.04.2015
Сообщения
6 055
Благодарностей
6 482
Баллы
113
а зачем лок делать ? ну и пусть пишит в разноброс, на последнем потоке который просто будет завершать сделать по убыванию или по возрастанию. зачем лишний лок, лок хоть и работает миллисенду но тоже считай что тормоз потоку, меньше локов используйте, держи в памяти, а потом за раз в файл кидай что бы не обращаться к диску милион раз
ну ты же шаришь в шарпе и локах, ну тебе конкретный вопрос задали, помоги человеку с локом...

Да, так да
Нет, так нет

нахуя разглогольствовать? не понимаю
 
  • Спасибо
Реакции: one

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
ну ты же шаришь в шарпе и локах, ну тебе конкретный вопрос задали, помоги человеку с локом...

Да, так да
Нет, так нет

нахуя разглогольствовать? не понимаю
мне ответили на моё скрином, я ему дал ответ, что ещё надо от меня ?
типо он деловой и продуманый
так пусть скрин разберёт и вытащит оттуда код
я его скрин что должен по лупой рассматривать ?
 

backoff

Client
Регистрация
20.04.2015
Сообщения
6 055
Благодарностей
6 482
Баллы
113
скинь пример лока для записи в текстовый файл.
я себе в коллекцию запишу
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 040
Баллы
113
если у тебя шаблон коряво написан, то чтобы избежать дублей тех кто у тебя потоки берут одну строку много раз, сделай диктонари, там по ключу больше одного не добавишь, в конце выгрузрузку за миллисенду сделал. и ни каких гиговых файлов привязывать, вы сами знаете что зенка умирает с большими файлами и пользуетесь этим
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
ааа сорян, даже не обратил внимание на это...
Бывает... )))

Хез зачем удалили и мой пост а шнягу выше оставили ну да ладно...

Вот, нашел в шаблонах у себя решение с БД. Раз ответа на четкий с пояснениями вопрос не получил. Сплошные предположения, фантазии и не совсем понятные просьбы типа приложи шаблон... Сохалинский, тезка, тему ищешь, лам уже не поднять в мес? ))) Буду использовать это, тем более что с БД работаю постоянно. На сколько данное решение корректно не знаю, но работает для моих задач. Может кому и пригодиться в будущем.

Код:
lock(SyncObject) {
// Получаем ID последнего аккаунта.
project.Variables["USER_LAST_ACCOUNT_USED"].Value = ZennoPoster.Db.ExecuteQuery("SELECT `id` FROM `activity`", null, ZennoLab.InterfacesLibrary.Enums.Db.DbProvider.MySqlClient, "server=" + project.Variables["DB_HOST"].Value + "; user id=" + project.Variables["DB_USER_NAME"].Value + "; password=" + project.Variables["DB_USER_PASSWORD"].Value + "; database=my_db", " ", "\r\n");

// Увеличиваем счетчик
project.Variables["USER_LAST_ACCOUNT_USED"].Value = Convert.ToString(Convert.ToInt32(project.Variables["USER_LAST_ACCOUNT_USED"].Value)+1);
  
// Записываем ID аккаунта в БД.
project.Variables["TMP"].Value = ZennoPoster.Db.ExecuteNonQuery("UPDATE activity SET `id` = " + project.Variables["USER_LAST_ACCOUNT_USED"].Value + ";", null, ZennoLab.InterfacesLibrary.Enums.Db.DbProvider.MySqlClient, "server=" + project.Variables["DB_HOST"].Value + "; user id=" + project.Variables["DB_USER_NAME"].Value + "; password=" + project.Variables["DB_USER_PASSWORD"].Value + "; database=my_db").ToString();  
}
 
Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 438
Благодарностей
9 135
Баллы
113
  • Спасибо
Реакции: one

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 980
Благодарностей
4 433
Баллы
113
Тоже мучался с решением, а ответа так и нет. Если обернуть lock(SyncObject) сумматор счетчика, то это действительно поможет от ошибок в многопотоке?
Код:
lock(SyncObject) {
string path = project.Directory + "\\fails.txt";
int intcount = Convert.ToInt32(File.ReadAllText(path)) + 1;
File.WriteAllText(path, intcount.ToString());}
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Тоже мучался с решением, а ответа так и нет. Если обернуть lock(SyncObject) сумматор счетчика, то это действительно поможет от ошибок в многопотоке?
Надо тестировать и наблюдать, но по любому, по крайне мере каждый поток будет брать свое. Вопрос только в очереди этих ожидающих потоков и параллельно работающих шаблонов.

У меня стояла задача, что бы каждый поток брал свое и ни грамма чужого. Выше выложил решение для работы с БД, работает отлично.
 

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