powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление tmp файлов при выборках в курсоры
13 сообщений из 13, страница 1 из 1
Удаление tmp файлов при выборках в курсоры
    #37752399
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Есть последовательный цикл выборки каких-то данных с созданием необходимых курсоров. При каждом цикле все курсоры закрываются, типа:
автор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 и программа останавливается.
Как побороть?
Уже и в отладчике смотрю - по тексту программы все нормально. Вот не удаляются файлы связанный именно с одним курсором, хоть тресни.
...
Рейтинг: 0 / 0
Удаление tmp файлов при выборках в курсоры
    #37752453
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никогда с подобным не сталкивался. обычно .TMP файлы остаются при вылетании фокса.
попробуй не закрывать курсор, возможно тот же файл будет использоваться.

и что значит "происходит переполнение файлов в папке temp" ? там нет ограничений на количество файлов
...
Рейтинг: 0 / 0
Удаление tmp файлов при выборках в курсоры
    #37752468
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте в папку положить 10 тыс файлов - потом расскажите про ограничения.
Курсор как не закрывать? Разные данные же вынимаются при каждом цикле.
Вот выдержка и хелпа.
Опция NOFILTER создает временный курсор, который может использоваться в последующих Запросах.
Примечание
При использовании опции NOFILTER повышается производительность выполнения запроса; временная таблица создается в этом случае на диске. Когда курсор закрывается - временная таблица удаляется с диска.
...
Рейтинг: 0 / 0
Удаление tmp файлов при выборках в курсоры
    #37752492
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А. С.Попробуйте в папку положить 10 тыс файлов - потом расскажите про ограничения.
есть у меня такие папки :) если ее не открывать проводником - все работает

А. С.Курсор как не закрывать? Разные данные же вынимаются при каждом цикле.
Код: sql
1.
select * from table 1 into cursor cur1 readwrite nofilter


select сам закрывает курсор и создает новый с тем же именем. Есть предположение что временный файлик при этом останется с тем же именем. это только предположение.
...
Рейтинг: 0 / 0
Удаление tmp файлов при выборках в курсоры
    #37752531
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если много tmp то в какой-то момент фокс новый перестает создавать.
HeplCURSOR CursorName [NOFILTER | READWRITE]
Размещение результатов Запроса во временном Курсоре.

Примечание
Если вы определяете имя уже открытой таблицы, Visual FoxPro генерирует сообщение об ошибке.
...
Рейтинг: 0 / 0
Удаление tmp файлов при выборках в курсоры
    #37752548
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А. С.Если много tmp то в какой-то момент фокс новый перестает создавать.
HeplCURSOR CursorName [NOFILTER | READWRITE]
Размещение результатов Запроса во временном Курсоре.

Примечание
Если вы определяете имя уже открытой таблицы , Visual FoxPro генерирует сообщение об ошибке.

Сам то прочитал что скопипастил?
Вот тебе не лень сюда хэлп копировать. Просто возьми и попробуй не закрывать курсор.
...
Рейтинг: 0 / 0
Удаление tmp файлов при выборках в курсоры
    #37752549
XAndy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А. С.,

Это может быть связано с малым временным интервалом между созданием/уничножением файлов, ОС не успевает нормально отработать. Кардинальный выход - менять алгоритм, без создания курсоров в цикле
...
Рейтинг: 0 / 0
Удаление tmp файлов при выборках в курсоры
    #37752576
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.к. ошибка редкая, сокрее всего глюк фокса, неплохо бы попытаться смоделировать на простом примере и сюда выложить.
попробовал так сделать, 9 .TMP файлов в итоге:
Код: sql
1.
2.
3.
4.
for i = 1 to 100000
   select * from MyTyble where nId = i%10000 into cursor cur1 nofilter readwrite
   use in cur1
endfor
...
Рейтинг: 0 / 0
Удаление tmp файлов при выборках в курсоры
    #37752603
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал не закрывать - сообщение об ошибке "Alias name is already in use".
Файловая система ни при чем, я в отладчике пошагово пробую - не удаляет.
...
Рейтинг: 0 / 0
Удаление tmp файлов при выборках в курсоры
    #37752623
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А. С.Попробовал не закрывать - сообщение об ошибке "Alias name is already in use".
Файловая система ни при чем, я в отладчике пошагово пробую - не удаляет.
выполни
Код: sql
1.
2.
3.
select * from table 1 into cursor cur1 readwrite nofilter
select * from table 1 into cursor cur1 readwrite nofilter
select * from table 1 into cursor cur1 readwrite nofilter


у меня так работает.

Дальше в ходе не используешь ALTER TABLE cur1 ... ?
...
Рейтинг: 0 / 0
Удаление tmp файлов при выборках в курсоры
    #37752656
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALTER TABLE cur1 ...
не советую так делать, иногда мистика начинается если ALTER TABLE для курсора вызывать, в т.ч. ошибка "Alias name is already in use"
лучше все преобразование структуры включить в селект.
...
Рейтинг: 0 / 0
Удаление tmp файлов при выборках в курсоры
    #37752670
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
заметил что именно при выполнении ALTER TABLE файл записывается на диск. Поле добавлял логическое, сейчас попробую сразу в селекте добавить.
...
Рейтинг: 0 / 0
Удаление tmp файлов при выборках в курсоры
    #37752696
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все, точно alter table - убрал, стал удаляться. Спасибо за внимание. Закрываем.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление tmp файлов при выборках в курсоры
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]