|
Удаление tmp файлов при выборках в курсоры
|
|||
---|---|---|---|
#18+
Здравствуйте. Есть последовательный цикл выборки каких-то данных с созданием необходимых курсоров. При каждом цикле все курсоры закрываются, типа: авторselect * from table 1 into cursor cur1 readwrite nofilter ... use in cur1 То есть закрываю ненужные всегда. При создании курсоров в папке temp соответственно создаются файлики *.tmp Так вот проблема в том что при закрытии курсоров tmp файлы обычно удаляются, но есть которые не удаляются. Я переименовал один из них в *.dbf - открыл, знаю что за курсор, по тексту программы его закрываю 100%, потому что при следующем цикле выбираю новые данные в курсор с таким же именем. Перед созданием каждого курсора дополнительно идет проверка: авторif used('cur1') use in cur1 endif Весь цикл включает в себя порядка 20 тыс повторений выборок, то есть при каждой создается (и не удаляется) один из файлов *.tmp, то есть в какой то момент происходит переполнение файлов в папке temp и программа останавливается. Как побороть? Уже и в отладчике смотрю - по тексту программы все нормально. Вот не удаляются файлы связанный именно с одним курсором, хоть тресни. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 13:46 |
|
Удаление tmp файлов при выборках в курсоры
|
|||
---|---|---|---|
#18+
Никогда с подобным не сталкивался. обычно .TMP файлы остаются при вылетании фокса. попробуй не закрывать курсор, возможно тот же файл будет использоваться. и что значит "происходит переполнение файлов в папке temp" ? там нет ограничений на количество файлов ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 14:03 |
|
Удаление tmp файлов при выборках в курсоры
|
|||
---|---|---|---|
#18+
Попробуйте в папку положить 10 тыс файлов - потом расскажите про ограничения. Курсор как не закрывать? Разные данные же вынимаются при каждом цикле. Вот выдержка и хелпа. Опция NOFILTER создает временный курсор, который может использоваться в последующих Запросах. Примечание При использовании опции NOFILTER повышается производительность выполнения запроса; временная таблица создается в этом случае на диске. Когда курсор закрывается - временная таблица удаляется с диска. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 14:07 |
|
Удаление tmp файлов при выборках в курсоры
|
|||
---|---|---|---|
#18+
А. С.Попробуйте в папку положить 10 тыс файлов - потом расскажите про ограничения. есть у меня такие папки :) если ее не открывать проводником - все работает А. С.Курсор как не закрывать? Разные данные же вынимаются при каждом цикле. Код: sql 1.
select сам закрывает курсор и создает новый с тем же именем. Есть предположение что временный файлик при этом останется с тем же именем. это только предположение. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 14:14 |
|
Удаление tmp файлов при выборках в курсоры
|
|||
---|---|---|---|
#18+
Если много tmp то в какой-то момент фокс новый перестает создавать. HeplCURSOR CursorName [NOFILTER | READWRITE] Размещение результатов Запроса во временном Курсоре. Примечание Если вы определяете имя уже открытой таблицы, Visual FoxPro генерирует сообщение об ошибке. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 14:24 |
|
Удаление tmp файлов при выборках в курсоры
|
|||
---|---|---|---|
#18+
А. С.Если много tmp то в какой-то момент фокс новый перестает создавать. HeplCURSOR CursorName [NOFILTER | READWRITE] Размещение результатов Запроса во временном Курсоре. Примечание Если вы определяете имя уже открытой таблицы , Visual FoxPro генерирует сообщение об ошибке. Сам то прочитал что скопипастил? Вот тебе не лень сюда хэлп копировать. Просто возьми и попробуй не закрывать курсор. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 14:30 |
|
Удаление tmp файлов при выборках в курсоры
|
|||
---|---|---|---|
#18+
А. С., Это может быть связано с малым временным интервалом между созданием/уничножением файлов, ОС не успевает нормально отработать. Кардинальный выход - менять алгоритм, без создания курсоров в цикле ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 14:30 |
|
Удаление tmp файлов при выборках в курсоры
|
|||
---|---|---|---|
#18+
Т.к. ошибка редкая, сокрее всего глюк фокса, неплохо бы попытаться смоделировать на простом примере и сюда выложить. попробовал так сделать, 9 .TMP файлов в итоге: Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 14:38 |
|
Удаление tmp файлов при выборках в курсоры
|
|||
---|---|---|---|
#18+
Попробовал не закрывать - сообщение об ошибке "Alias name is already in use". Файловая система ни при чем, я в отладчике пошагово пробую - не удаляет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 14:45 |
|
Удаление tmp файлов при выборках в курсоры
|
|||
---|---|---|---|
#18+
А. С.Попробовал не закрывать - сообщение об ошибке "Alias name is already in use". Файловая система ни при чем, я в отладчике пошагово пробую - не удаляет. выполни Код: sql 1. 2. 3.
у меня так работает. Дальше в ходе не используешь ALTER TABLE cur1 ... ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 14:50 |
|
Удаление tmp файлов при выборках в курсоры
|
|||
---|---|---|---|
#18+
ALTER TABLE cur1 ... не советую так делать, иногда мистика начинается если ALTER TABLE для курсора вызывать, в т.ч. ошибка "Alias name is already in use" лучше все преобразование структуры включить в селект. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 14:58 |
|
Удаление tmp файлов при выборках в курсоры
|
|||
---|---|---|---|
#18+
заметил что именно при выполнении ALTER TABLE файл записывается на диск. Поле добавлял логическое, сейчас попробую сразу в селекте добавить. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2012, 15:03 |
|
|
start [/forum/topic.php?fid=41&msg=37752670&tid=1583732]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 272ms |
total: | 408ms |
0 / 0 |