[ID CC2024] Скрипт индезайна и база данных

iGrey

Топикстартер
10 лет на форуме
Сообщения
102
Реакции
6
Ситуация:
Есть текстовый файл, который лежит на диске и сторонней программой обновляется раз в час.
При запуске Индезайновского скрипта, он читает этот текстовик в поисках нужной информации.
JavaScript:
    //-----------------  Читаем данные из файла  --------------------------------------------
    myDann = new File("/"+MyDiskNet+"/~UPDATES/~INFO/dann.txt");
    myDann.open("r"); 
    countID = 0;
    while (!myDann.eof)  {
        s = myDann.readln();
        if (s.indexOf(MyIDFileF)+1 < 1) continue;
        dannIN = s.split (';');
        if ((dannIN[0] == MyIDFileF) || (dannIN[8] == MyIDFileF)) {
            FindId [countID] = dannIN;
            countID ++; }
    }
    myDann.close();

Читать надо каждый раз до конца. Информация может встретится несколько раз.
Пока текстовик был до 300 строк все было ОК.
Сейчас 1100+ строк. Уже заметно тормозит.
Пока вынес текстовик в RAM disk. Стало легче, но ненамного.
В перспективе рост текстовика до 2000+ строк.

Может кто посоветует в какую сторону думать, чтоб это все ускорить?
Есть волшебная команда затянуть разом текстовик в массив и работать с массивом по ключам?
Или какая-то БД?
Умеет ли индезайновский скрипт сам искать внутри какой-то БД?
 

zollinger

Участник
Сообщения
553
Реакции
168
а вот так почему нельзя? Считать в одну строку, а потом делить на массив строк и обрабатывать в цикле или вообще сразу искать нужные indexOf
string read ([chars: number])
Reads the contents of the file, starting at the current position.
Returns a string that contains up to the specified number of characters. If a number of characters is not supplied, reads from the current position to the end of the file. If the file is encoded, multiple bytes might be read to create single Unicode characters.

ParameterTypeDescription
charsnumberAn integer specifying the number of characters to read. (Optional)
 
Последнее редактирование:
  • Спасибо
Реакции: iGrey

iGrey

Топикстартер
10 лет на форуме
Сообщения
102
Реакции
6
а вот так почему нельзя? Считать в одну строку, а потом делить на массив строк и обрабатывать в цикле или вообще сразу искать нужные indexOf
Мне почему-то такое кощунство - загнать весь файл в одну строку даже в голову не пришло. Ограничения сознания :)
А ведь штука работает и работает как надо.
Спасибо большое. Проблема решена.