Проблема с сохранением файла

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
Доброго дня!
http://skrinshoter.ru/s/230119/yIm1kGNu
1. Записываю из переменной $test в файл ряд данных.
1.5 ПАУЗА 10 сек
2. Проверяю наличие данных в файле (получаю кол-во строк).
3. Проверка на кол-ва строк == 0 (Если файл пуст, то уходим по другой ветке).
4. Обрабатываю эти данные.

Подскажите как убрать паузу в 10 сек? Пробовал проверять файл на наличие, но файл создается быстро и эту проверку он проходит, а данные не успевают добавится. 10 секунд это минимальное значение. Пробовал и 2,3,4,5,6,7,8,9. Только с 10 сек. обрабатывает корректно, т.е успевает записать в файл данные и получить кол-во строк. Данных очень много и 10 сек. ожидания это очень долго. И проверить повторно не могу т.к выполняется проверка на пустоту файла заранее.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
Доброго дня!
http://skrinshoter.ru/s/230119/yIm1kGNu
1. Записываю из переменной $test в файл ряд данных.
1.5 ПАУЗА 10 сек
2. Проверяю наличие данных в файле (получаю кол-во строк).
3. Проверка на кол-ва строк == 0 (Если файл пуст, то уходим по другой ветке).
4. Обрабатываю эти данные.

Подскажите как убрать паузу в 10 сек? Пробовал проверять файл на наличие, но файл создается быстро и эту проверку он проходит, а данные не успевают добавится. 10 секунд это минимальное значение. Пробовал и 2,3,4,5,6,7,8,9. Только с 10 сек. обрабатывает корректно, т.е успевает записать в файл данные и получить кол-во строк. Данных очень много и 10 сек. ожидания это очень долго. И проверить повторно не могу т.к выполняется проверка на пустоту файла заранее.
Можно организовать цикл с опросом кол-ва строк и между циклами опроса установить минимальную паузу 1 сек.
 

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
Можно организовать цикл с опросом кол-ва строк и между циклами опроса установить минимальную паузу 1 сек.
Не совсем понял. Попробовал сделать вот так http://skrinshoter.ru/s/230119/tEwys1ft
1. Записываю из переменной $test в файл ряд данных.
2. Узнаем кол-во строк
3. Проверка, если строк нет, то опять узнаем кол-во строк.
4. Обрабатываем данные
5. Проверка взята ли строчка 1, если взята, то можно заканчивать и переходить к новой ветке. Т.к проверка на строчку 1 находится в конце, то значит она уже обработалась.

Все бы ничего и это идеально работает с детальной отрисовкой, но когда я включаю на отложенную отрисовку, то программа в месте получения кол-ва строк зацикливается и (2-3 пункты) это происходит до бесконечности.
 

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
В этих логах хорошо видно. http://skrinshoter.ru/s/230119/3pspS20U
1. Получили данные
2. Записали их в файл
3. И происходит зацикливание (2 и 3 пунктов). Как-будто в файл не сохранились данные.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
В этих логах хорошо видно. http://skrinshoter.ru/s/230119/3pspS20U
1. Получили данные
2. Записали их в файл
3. И происходит зацикливание (2 и 3 пунктов). Как-будто в файл не сохранились данные.
А если через небольшую паузу делать опрос кол-ва строк, напрмиер 1 сек?
 

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
А если через небольшую паузу делать опрос кол-ва строк, напрмиер 1 сек?
Попробовал
1. Добавил кубик на проверку существования файла (изначально его нет, не ставил галочку "Оставлять пустым")
2. Добавил 1 сек ожидания.
http://skrinshoter.ru/s/230119/aUAsowYF
Такое ощущение, что не происходит сохранения или происходит через раз.

Просто бред. Месяц бьюсь над проектом уже реализовал все самое сложное в нем и пипец, сохранение не работает. Издевательство(
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
выкини кубик работы с файлом вообще
C# запись в файл

Код:
FileSystem.FileAppendString(project.Directory + "\\File.txt", переменая то что записать, true);
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
1. Добавил кубик на проверку существования файла
Мне кажется, это лишнее, список по любому есть в памяти, в файл он записывается с задержкой, это понятно.
Можно продолжать работать со списком. Попробуйте поставить на минимум эту настройку (Настройки -> Выполнение)

upload_2019-1-23_15-4-19.png
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113

ssXXXss

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

ssXXXss

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

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
Мне кажется, это лишнее, список по любому есть в памяти, в файл он записывается с задержкой, это понятно.
Можно продолжать работать со списком. Попробуйте поставить на минимум эту настройку (Настройки -> Выполнение)

Посмотреть вложение 35492
Это стоит http://skrinshoter.ru/s/230119/2rDB4OuG
 

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
выкини кубик работы с файлом вообще
C# запись в файл

Код:
FileSystem.FileAppendString(project.Directory + "\\File.txt", переменая то что записать, true);
Код попробовал. Записывает в файл. Но в момент получения кол-ва строк с выключенной отрисовкой скрипт опять зацикливается.
 

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
тем более у кубика операции над списком стоит уже лок, если ты пишешь в этот же с удалением то не спорю надо лочить, а если просто запись делаете вам не пофиг первой она строкой ляжет или 10-й
так как многопоток это потоки не попорядку
10 поток моджет записать быстрее
для меня так пофиг
Работа будет идти в один поток. (по крайней мере в этом году).
 

Sergodjan

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

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
Код попробовал. Записывает в файл. Но в момент получения кол-ва строк с выключенной отрисовкой скрипт опять зацикливается.
http://skrinshoter.ru/s/230119/izzOhuWv - тоже самое в логе. Данные добавляются, а в момент взятия кол-ва строк происходит зацикливание.
 

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
тем более у кубика операции над списком стоит уже лок, если ты пишешь в этот же с удалением то не спорю надо лочить, а если просто запись делаете вам не пофиг первой она строкой ляжет или 10-й
так как многопоток это потоки не попорядку
10 поток моджет записать быстрее
для меня так пофиг
Подскажите как на С# получить кол-во строк? Может это тоже при помощи си взять?
 

ssXXXss

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

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Подскажите как на С# получить кол-во строк? Может это тоже при помощи си взять?
количество строк откуда ?

с привязаного списка
с файла ?

есть вики если что на то пошло, и там на C#
 

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
количество строк откуда ?

с привязаного списка
с файла ?

есть вики если что на то пошло, и там на C#
Кол-во строк из привязанного списка. Посмотрю сам не проблема) Подумал вы сможете быстро дать ответ, но ничего страшного вы мне ни чем не обязаны. Вы и так мне помогаете.)
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
return project.Lists["LIST"].Count;
 
  • Спасибо
Реакции: luserz

ssXXXss

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

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
и если файл привязан для того только чтобы в него записывать то нафиг отвязывай и список удаляй, учись работать с 2 списками и 10 переменных ))
Да, у меня уже около 100 переменных. На каждую функцию. Иначе потом сложно разобраться. Кто и что и откуда взялось. Диск SSD 320 GB брал за дорого. Оперативки 8 гб.
 

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
Антивирус отключил. Была мысль, что касперский все портит) Это не помогло.
 

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
я понимаю и знаю что многие это знают, но вот тебе пример небольшой, по мимо этих примеров есть ещё быстрее

C#:
var time1 = DateTime.Now.Ticks;
project.SendInfoToLog("", "зпись в лист => " + time1);
var list = new List<string>();
for (int i = 0; i < 1000000; i++)
{
    list.Add(i.ToString());
}
var time2 = DateTime.Now.Ticks;
FileSystem.FileAppendString(project.Directory + "\\List.txt", string.Join("\r\n", list), true);
project.SendInfoToLog("", "Запись в лист завршена => " + time2);
long result1 = (long)time2 - (long)time1;
project.SendInfoToLog("", "Запись в лист завршена => result => " + result1.ToString());

//===============================================================================================================

var time3 = DateTime.Now.Ticks;
project.SendInfoToLog("", "Запись в список с привязанным файлом => " + time3);
var sourceList = project.Lists["SourceList"];//привязаный список к файлу
for (int i = 0; i < 1000000; i++)
{
    sourceList.Add(i.ToString());
}
var time4 = DateTime.Now.Ticks;
project.SendInfoToLog("", "Запись в список завершена => " + time4);
long result2 = (long)time4 - (long)time3;
project.SendInfoToLog("", "Запись в лист завршена => result => " + result2.ToString());

//===============================================================================================================

var time5 = DateTime.Now.Ticks;
project.SendInfoToLog("", "Запись в StringBuilder с сохранением в файл => " + time5);
var sb = new StringBuilder();
for (int i = 0; i < 1000000; i++)
{
    sb.Append(i.ToString() + "\r");
}
var time6 = DateTime.Now.Ticks;
FileSystem.FileAppendString(project.Directory + "\\StringBuilder.txt", string.Join("\r\n", sb), true);
project.SendInfoToLog("", "апись в StringBuilder завершена => " + time6);
long result3 = (long)time6 - (long)time5;
project.SendInfoToLog("", "Запись в лист завршена => result => " + result3.ToString());
результат

2019-01-24_013536.png


а теперь подумай, стоит ли привязываться вообще к файлу, это однопоток, в многопотоке тупанёт полюбому
 
Последнее редактирование:

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
я понимаю и знаю что многие это знают, но вот тебе пример небольшой, по мимо этих примеров есть ещё быстрее

C#:
var time1 = DateTime.Now.Ticks;
project.SendInfoToLog("", "зпись в лист => " + time1);
var list = new List<string>();
for (int i = 0; i < 1000000; i++)
{
    list.Add(i.ToString());
}
var time2 = DateTime.Now.Ticks;
FileSystem.FileAppendString(project.Directory + "\\List.txt", string.Join("\r\n", list), true);
project.SendInfoToLog("", "Запись в лист завршена => " + time2);
long result1 = (long)time2 - (long)time1;
project.SendInfoToLog("", "Запись в лист завршена => result => " + result1.ToString());

//===============================================================================================================

var time3 = DateTime.Now.Ticks;
project.SendInfoToLog("", "Запись в список с привязанным файлом" + time3);
var sourceList = project.Lists["SourceList"];//привязаный список к файлу
for (int i = 0; i < 1000000; i++)
{
    sourceList.Add(i.ToString());
}
var time4 = DateTime.Now.Ticks;
project.SendInfoToLog("", "Запись в список завершена" + time4);
long result2 = (long)time4 - (long)time3;
project.SendInfoToLog("", "Запись в лист завршена => result => " + result2.ToString());

//===============================================================================================================

var time5 = DateTime.Now.Ticks;
project.SendInfoToLog("", "Запись в StringBuilder с сохранением в файл" + time5);
var sb = new StringBuilder();
for (int i = 0; i < 1000000; i++)
{
    sb.Append(i.ToString() + "\r");
}
var time6 = DateTime.Now.Ticks;
FileSystem.FileAppendString(project.Directory + "\\StringBuilder.txt", string.Join("\r\n", sb), true);
project.SendInfoToLog("", "апись в StringBuilder завершена" + time6);
long result3 = (long)time6 - (long)time5;
project.SendInfoToLog("", "Запись в лист завршена => result => " + result3.ToString());
результат

Посмотреть вложение 35502

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

luserz

Client
Регистрация
07.09.2016
Сообщения
114
Благодарностей
5
Баллы
18
Я так понимаю тут может быть две ошибки.
1. Либо в настройках где-то проблема с отложенной отрисовкой.
2. Либо файл в момент зацикливания не готов и скрипт попадает в момент его создания и начинается косяк.
 

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