Удаление/добавление данных с ресурса вручную. Не по Success или Fail



  • @support хотел бы уточнить, это удалит текущую строку из ресурса (ту что на данный момент использую) и дальше я смогу брать опять строку(следующую) с ресурса ?


  • administrators

    Немного подправил код. В таком виде можно



  • на данный момент проще просить, чем самому проверять:
    использую код выше, для удаления строки с ресурса. Оно удаляет с копии (которая находится в оперативной памяти). Вопрос: а когда они удалятся из файла на жестком диске? Скорее всего при успешном завершении скрипта. А вот если скрипт Fail сработал, строки удаляются с файла или нет? (мне нужно, чтобы удалялись).

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



  • каким кодом можно добавить строки в ресурс(не только в копию в оперативной памяти, но и в физический файл., чтобы они вдруг если что не потерялись), так, чтобы это заметили и другие потоки, могли использовать эти данные, когда до низ дойдет очередь ?

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


  • administrators

    @out said:

    использую код выше, для удаления строки с ресурса. Оно удаляет с копии (которая находится в оперативной памяти). Вопрос: а когда они удалятся из файла на жестком диске? Скорее всего при успешном завершении скрипта. А вот если скрипт Fail сработал, строки удаляются с файла или нет? (мне нужно, чтобы удалялись).

    либо по завершении скрипта, либо через некоторое время.

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

    Да будут, как вариант.


  • administrators

    @out said:

    каким кодом можно добавить строки в ресурс(не только в копию в оперативной памяти, но и в физический файл., чтобы они вдруг если что не потерялись), так, чтобы это заметили и другие потоки, могли использовать эти данные, когда до низ дойдет очередь ?

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

    В ресурс есть возможность добавлять, но это действие не записывает в файл.
    Сейчас подумаю, как это лучше сделать, чуть позже отпишу.



  • @support said:

    @out said:

    каким кодом можно добавить строки в ресурс(не только в копию в оперативной памяти, но и в физический файл., чтобы они вдруг если что не потерялись), так, чтобы это заметили и другие потоки, могли использовать эти данные, когда до низ дойдет очередь ?

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

    В ресурс есть возможность добавлять, но это действие не записывает в файл.
    Сейчас подумаю, как это лучше сделать, чуть позже отпишу.

    попробую сперва заменить работу с ресурсом на

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

    если будет нормально в многопотоке, то в принципе и вопрос решен.


  • administrators

    Все действия в БАС являются потокобезопасными, исключение составляют асинхронные модули, написанные на с++, которые используют общие ресурсы, и в которых создатели модулей не позаботились о синхронизации.

    Что касается добавления в ресурс, то если есть необходимость, могу реализовать в течении 1-2 дней.



  • ну текущую задачу я как-то может решу без ресурса, а напрямую работая с файлом. А вообще , на будущее такой функционал конечно же нужен: добавление строки в конец/начало ресурса, тоже самое и с получением строки.. На мой взгляд нужно чучуть добавить гибкости/возможности взаимодействовать с ресурсами уже в процессе работы внутри скрипта.

    UP: пытался решить этот момент, получился замкнутый круг..
    Удаляю строку с ресурса кодом выше, но с файла она не удаляется. Удаляется только тогда , когда стоит галка на ресурсе "Удалять строки".
    Но если я ее ставлю, то тогда строки уже автоматом удаляются с ресурса, сразу после взятия их с галкой notreuse ({{inps_profile_pars|notreuse}}).
    такой вот затык(
    А нужно мне всего лишь было: брать строку из файла, после взятия чтобы она сразу не удалялась, а удалялась только после использования кода
    RS("Название ресурса",false,false)!
    _result().die()
    _R["Название ресурса"] = null

    Короче говоря, нужна обычная работа с файлами (списками). Указали путь к файлу, указали что это список, дальше берем и работаем построчно с этим списком, взять строку, с удалением, без. Синхронизировать с локальным файлом или нет. и т.д.
    Т.к. с ресурсами не удается работать гибко внутри одного потока.


  • administrators

    @out said:

    Но если я ее ставлю, то тогда строки уже автоматом удаляются с ресурса, сразу после взятия их с галкой notreuse

    Чтобы такого не было нужно поставить количество успехов и неудач больше 1. По умолчанию они стоят в 1.

    Короче говоря, нужна обычная работа с файлами (списками). Указали путь к файлу, указали что это список, дальше берем и работаем построчно с этим списком, взять строку, с удалением, без. Синхронизировать с локальным файлом или нет. и т.д.

    В БАС строки удаляются автоматически при наступлении допустимого количества неудач или успехов. Если нужно самостоятельно удалять строки, можно сделать таким образом - поставить галку удалять строки, выставить количество неудач и успехов в 10000, а при необходимости удалить строку вызывать код выше.


  • administrators

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

    0_1466367470707_ResourceModule.png

    0_1466367581194_RuAddElemetInterface.png

    Также появилась возможность, чтобы пользователь задавал путь к файлу с результатами.

    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



  • спасибо. такими темпами скоро можно будет выходить на конкурентов на платной основе )
    предлагаю переименовать "добавить в базу\файл мгновенно" на "добавить мгновенно"
    "только добавить в базу\файл" на "только добавить"

    это будет подразумевать "добавить в ресурс". что логично, т.к. работа идет с ресурсом. А файл это или база, дело "десятое", т.к. зависит от того как выбрал юзер ресурс, как базу или как файл.


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.