Удаление/добавление данных с ресурса вручную. Не по Success или Fail
-
на данный момент проще просить, чем самому проверять:
использую код выше, для удаления строки с ресурса. Оно удаляет с копии (которая находится в оперативной памяти). Вопрос: а когда они удалятся из файла на жестком диске? Скорее всего при успешном завершении скрипта. А вот если скрипт Fail сработал, строки удаляются с файла или нет? (мне нужно, чтобы удалялись).зы: возможно, мне вообще для этого случая не стоило использовать ресурс, а делать через обычную реалтайм запись/удаление строк из файла. Я так понимаю, разные потоки будут лочить обращение к файлу, как и полагается.
-
каким кодом можно добавить строки в ресурс(не только в копию в оперативной памяти, но и в физический файл., чтобы они вдруг если что не потерялись), так, чтобы это заметили и другие потоки, могли использовать эти данные, когда до низ дойдет очередь ?
Просто задача такого плана сейчас:
при определенном условии, нужно взять и добавить 10 строк назад в ресурс. Перед этим мы их удаляли (код выше). Но вот наступила определенная ситуация, и нужно эти данные(10 строк, которые, после взятия из ресурса сохраняются во временный массив(на случай, когда их придется вернуть в ресурс)) вернуть.
-
@out said:
использую код выше, для удаления строки с ресурса. Оно удаляет с копии (которая находится в оперативной памяти). Вопрос: а когда они удалятся из файла на жестком диске? Скорее всего при успешном завершении скрипта. А вот если скрипт Fail сработал, строки удаляются с файла или нет? (мне нужно, чтобы удалялись).
либо по завершении скрипта, либо через некоторое время.
зы: возможно, мне вообще для этого случая не стоило использовать ресурс, а делать через обычную реалтайм запись/удаление строк из файла. Я так понимаю, разные потоки будут лочить обращение к файлу, как и полагается.
Да будут, как вариант.
-
@out said:
каким кодом можно добавить строки в ресурс(не только в копию в оперативной памяти, но и в физический файл., чтобы они вдруг если что не потерялись), так, чтобы это заметили и другие потоки, могли использовать эти данные, когда до низ дойдет очередь ?
Просто задача такого плана сейчас:
при определенном условии, нужно взять и добавить 10 строк назад в ресурс. Перед этим мы их удаляли (код выше). Но вот наступила определенная ситуация, и нужно эти данные(10 строк, которые, после взятия из ресурса сохраняются во временный массив(на случай, когда их придется вернуть в ресурс)) вернуть.В ресурс есть возможность добавлять, но это действие не записывает в файл.
Сейчас подумаю, как это лучше сделать, чуть позже отпишу.
-
@support said:
@out said:
каким кодом можно добавить строки в ресурс(не только в копию в оперативной памяти, но и в физический файл., чтобы они вдруг если что не потерялись), так, чтобы это заметили и другие потоки, могли использовать эти данные, когда до низ дойдет очередь ?
Просто задача такого плана сейчас:
при определенном условии, нужно взять и добавить 10 строк назад в ресурс. Перед этим мы их удаляли (код выше). Но вот наступила определенная ситуация, и нужно эти данные(10 строк, которые, после взятия из ресурса сохраняются во временный массив(на случай, когда их придется вернуть в ресурс)) вернуть.В ресурс есть возможность добавлять, но это действие не записывает в файл.
Сейчас подумаю, как это лучше сделать, чуть позже отпишу.попробую сперва заменить работу с ресурсом на
зы: возможно, мне вообще для этого случая не стоило использовать ресурс, а делать через обычную реалтайм запись/удаление строк из файла. Я так понимаю, разные потоки будут лочить обращение к файлу, как и полагается.
если будет нормально в многопотоке, то в принципе и вопрос решен.
-
Все действия в БАС являются потокобезопасными, исключение составляют асинхронные модули, написанные на с++, которые используют общие ресурсы, и в которых создатели модулей не позаботились о синхронизации.
Что касается добавления в ресурс, то если есть необходимость, могу реализовать в течении 1-2 дней.
-
ну текущую задачу я как-то может решу без ресурса, а напрямую работая с файлом. А вообще , на будущее такой функционал конечно же нужен: добавление строки в конец/начало ресурса, тоже самое и с получением строки.. На мой взгляд нужно чучуть добавить гибкости/возможности взаимодействовать с ресурсами уже в процессе работы внутри скрипта.
UP: пытался решить этот момент, получился замкнутый круг..
Удаляю строку с ресурса кодом выше, но с файла она не удаляется. Удаляется только тогда , когда стоит галка на ресурсе "Удалять строки".
Но если я ее ставлю, то тогда строки уже автоматом удаляются с ресурса, сразу после взятия их с галкой notreuse ({{inps_profile_pars|notreuse}}).
такой вот затык(
А нужно мне всего лишь было: брать строку из файла, после взятия чтобы она сразу не удалялась, а удалялась только после использования кода
RS("Название ресурса",false,false)!
_result().die()
_R["Название ресурса"] = nullКороче говоря, нужна обычная работа с файлами (списками). Указали путь к файлу, указали что это список, дальше берем и работаем построчно с этим списком, взять строку, с удалением, без. Синхронизировать с локальным файлом или нет. и т.д.
Т.к. с ресурсами не удается работать гибко внутри одного потока.
-
@out said:
Но если я ее ставлю, то тогда строки уже автоматом удаляются с ресурса, сразу после взятия их с галкой notreuse
Чтобы такого не было нужно поставить количество успехов и неудач больше 1. По умолчанию они стоят в 1.
Короче говоря, нужна обычная работа с файлами (списками). Указали путь к файлу, указали что это список, дальше берем и работаем построчно с этим списком, взять строку, с удалением, без. Синхронизировать с локальным файлом или нет. и т.д.
В БАС строки удаляются автоматически при наступлении допустимого количества неудач или успехов. Если нужно самостоятельно удалять строки, можно сделать таким образом - поставить галку удалять строки, выставить количество неудач и успехов в 10000, а при необходимости удалить строку вызывать код выше.
-
Добавил модуль для работы с ресурсами, теперь можно добавлять строки в файл и удалять из него, в том числе синхронизировать
Также появилась возможность, чтобы пользователь задавал путь к файлу с результатами.
http://wiki.bablosoft.com/doku.php?id=ru:how_to_let_user_to_choose_output_file_name
Скачать новую версию можно тут
https://bablosoft.com/distr/BrowserAutomationStudioDevelopment/11.4.0/BrowserAutomationStudioInstallAllInOne.exe
-
спасибо. такими темпами скоро можно будет выходить на конкурентов на платной основе )
предлагаю переименовать "добавить в базу\файл мгновенно" на "добавить мгновенно"
"только добавить в базу\файл" на "только добавить"это будет подразумевать "добавить в ресурс". что логично, т.к. работа идет с ресурсом. А файл это или база, дело "десятое", т.к. зависит от того как выбрал юзер ресурс, как базу или как файл.