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

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
Поделитесь решением под много поток у кого есть. Нужно получать\хранить значения счетчика в текстом файле.
 

backoff

Client
Joined
Apr 20, 2015
Messages
6,333
Reaction score
6,622
Points
113
а в чем проблема?
опиши логику шаба подробнее
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
если не знаешь как сделать или трудно, самый простой выход положить в список цифры, каждый поток берёт рандомно или первую с удалением и ложит в список гуд если отработал, какие тут трудности ?
это я к тому сказал если лень по форуму искать или в гугле, то вот так делай
 

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
а в чем проблема?
опиши логику шаба подробнее
Да надо нагенерировать определенное кол-во профилей, для этого надо запускать шаблон постоянно для генерации нового профиля.

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

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

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

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
если не знаешь как сделать или трудно, самый простой выход положить в список цифры, каждый поток берёт рандомно или первую с удалением и ложит в список гуд если отработал, какие тут трудности ?
При много потоке проблемы будут если ты про обычные экшены.
это я к тому сказал если лень по форуму искать или в гугле, то вот так делай
Искал, но не нашел ничего подходящего.
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
есть такой кубик в зенке, повторить в цикле
При много потоке проблемы будут если ты про обычные экшены.

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

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
все хотят одну строку
Кто тебе про это сказал?
ты для начала тогда свой шаб выложи, покажи свои труды что сделал
Очень так хочешь увидеть? Прям очень-очень? ) Ну, скрин покажу... Держи!

upload_2019-1-23_13-7-39.png
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
Кто тебе про это сказал?

Очень так хочешь увидеть? Прям очень-очень? ) Ну, скрин покажу... Держи!

View attachment 35482
держи тогда ответ

2019-01-23_220940.png
 

backoff

Client
Joined
Apr 20, 2015
Messages
6,333
Reaction score
6,622
Points
113
Да надо нагенерировать определенное кол-во профилей, для этого надо запускать шаблон постоянно для генерации нового профиля.
эм...
а зачем конфиг вообще нужен, если запускается только новые профили?
вместо конфиг файла, для такого шаба, советую сделать таблицу, где в нужном столбике в значении "статус" будешь прописывать статус профиля
типа
done
create
bad ну и тп
 

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
эм...
а зачем конфиг вообще нужен, если запускается только новые профили?
вместо конфиг файла, для такого шаба, советую сделать таблицу, где в нужном столбике в значении "статус" будешь прописывать статус профиля
типа
done
create
bad ну и тп
Так то да, но мне надо тупо по счетчику работать.
 

ebrwebrw

Client
Joined
Aug 20, 2018
Messages
221
Reaction score
164
Points
43
Был бы ты новичок я бы написал следующее:

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

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

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

backoff

Client
Joined
Apr 20, 2015
Messages
6,333
Reaction score
6,622
Points
113
но мне надо тупо по счетчику работать
ну тогда логика такая

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

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
Но из за того что опыта у тебя поболее моего должно быть, я походу чего то не понимаю и написал хуйню
Именно, в точку! :D
Бог ты мой, ну зачем фантазировать то если задан конкретный вопрос. То шаб им нужен, то проблему нашли...

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

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

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
а зачем лок делать ? ну и пусть пишит в разноброс, на последнем потоке который просто будет завершать сделать по убыванию или по возрастанию. зачем лишний лок, лок хоть и работает миллисенду но тоже считай что тормоз потоку, меньше локов используйте, держи в памяти, а потом за раз в файл кидай что бы не обращаться к диску милион раз
 

backoff

Client
Joined
Apr 20, 2015
Messages
6,333
Reaction score
6,622
Points
113
По этому и задал в этом разделе вопрос.
ааа сорян, даже не обратил внимание на это...
дописал бы, что нужен сниппет лока записи в текстовый файл в названии
сразу бы запили ответ.. а так видишь сколько народу размышляет :-)
правильно составляй текст )))
 
  • Thank you
Reactions: one

backoff

Client
Joined
Apr 20, 2015
Messages
6,333
Reaction score
6,622
Points
113
а зачем лок делать ? ну и пусть пишит в разноброс, на последнем потоке который просто будет завершать сделать по убыванию или по возрастанию. зачем лишний лок, лок хоть и работает миллисенду но тоже считай что тормоз потоку, меньше локов используйте, держи в памяти, а потом за раз в файл кидай что бы не обращаться к диску милион раз
ну ты же шаришь в шарпе и локах, ну тебе конкретный вопрос задали, помоги человеку с локом...

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

нахуя разглогольствовать? не понимаю
 
  • Thank you
Reactions: one

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
ну ты же шаришь в шарпе и локах, ну тебе конкретный вопрос задали, помоги человеку с локом...

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

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

backoff

Client
Joined
Apr 20, 2015
Messages
6,333
Reaction score
6,622
Points
113
скинь пример лока для записи в текстовый файл.
я себе в коллекцию запишу
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
если у тебя шаблон коряво написан, то чтобы избежать дублей тех кто у тебя потоки берут одну строку много раз, сделай диктонари, там по ключу больше одного не добавишь, в конце выгрузрузку за миллисенду сделал. и ни каких гиговых файлов привязывать, вы сами знаете что зенка умирает с большими файлами и пользуетесь этим
 

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
ааа сорян, даже не обратил внимание на это...
Бывает... )))

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

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

Code:
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();  
}
 
Last edited:

Sergodjan

Administrator
Staff member
Joined
Sep 5, 2012
Messages
22,696
Reaction score
10,156
Points
113
Хез зачем удалили и мой пост
Столько тут было наср... нафлужено, что видимо случайно зацепил. :-)
 
  • Thank you
Reactions: one

Astraport

Client
Joined
May 1, 2015
Messages
5,079
Reaction score
4,591
Points
113
Тоже мучался с решением, а ответа так и нет. Если обернуть lock(SyncObject) сумматор счетчика, то это действительно поможет от ошибок в многопотоке?
Code:
lock(SyncObject) {
string path = project.Directory + "\\fails.txt";
int intcount = Convert.ToInt32(File.ReadAllText(path)) + 1;
File.WriteAllText(path, intcount.ToString());}
 
  • Thank you
Reactions: one

one

Client
Joined
Sep 22, 2015
Messages
6,995
Reaction score
1,305
Points
113
Тоже мучался с решением, а ответа так и нет. Если обернуть lock(SyncObject) сумматор счетчика, то это действительно поможет от ошибок в многопотоке?
Надо тестировать и наблюдать, но по любому, по крайне мере каждый поток будет брать свое. Вопрос только в очереди этих ожидающих потоков и параллельно работающих шаблонов.

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

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)