Автор | Сообщение |
|
| постоянный участник
|
Пост N: 146
Зарегистрирован: 24.09.05
|
|
Отправлено: 21.07.10 14:36. Заголовок: Таймаут при ошибке открытия
fOpen("filename.ext",foExclusive) Если файл уже открыт, то прежде чем fopen() вернет -1, проходит около 3-4 секунд, при этом система загружена на 100% и ничего сделать нельзя. Если программа постоянно проверяет, можно ли открыть файл монопольно, а он занят, то делать что-то другое на этом компьютере вообще невозможно - все ресурсы уходят на элементарную в сущности операцию. как заставить винду возвращать ошибку немедленно (параметр в реестре?)
|
|
|
Ответов - 15
[только новые]
|
|
|
| |
Пост N: 1813
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.07.10 15:22. Заголовок: Та же фигня , так и ..
Та же фигня , так и не решил эту проблему.
|
|
|
|
| |
Пост N: 144
Зарегистрирован: 12.11.06
|
|
Отправлено: 21.07.10 15:54. Заголовок: А если? Когда-то дел..
А если? Когда-то делал: 1. Делаю копию файла (некоторые функции не дают скопировать и возвращают ошибку (можно анализировать)) 2. Пытаюсь записать вместо (при открытом файле возврат ошибки), а если получилось, то "вернуть" файл и открывать как хотите...
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 22.07.10 16:45. Заголовок: На серверах NT-шной ..
На серверах NT-шной линии раньше редактировали реестр: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters] "SharingViolationRetries"=dword:00000001 "SharingViolationDelay"=dword:00000030 Тут уменьшается количество попыток блокировок и сокращается время ожидания между ними. Но наверное могут быть и отрицательные последствия, хотя какие- не знаю. Не все администраторы нам такое изменение позволяли сделать. Потом ушли от попыток открыть файл монопольно путем введения таблицы MONITOR.DBF. В нее записывается при открытии каждая таблица с указанием пользователя и блокируется. После этого для определения - открыт ли файл - выполняется поиск записи о нем в мониторе и попытка блокировки записи. Это существенно быстрее. Побочный эффект - можно в любой момент узнать кто работает с базой. При нормальном выходе из программы записи, созданные выходящим пользователем, удаляются. Если кто-то отвалился аварийно, то его записи разблокируются и остаются. Это позволяет оповещать пользователей об аварийной ситуации
|
|
|
|
| постоянный участник
|
Пост N: 416
Зарегистрирован: 27.01.07
|
|
Отправлено: 22.07.10 20:54. Заголовок: ...и еще можно попро..
...и еще можно попробывать: The simplest way to resolve problems related to oplocks is to disable them on behalf of the LAN Manager server. This is done by manipulating the following registry key: \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters EnableOplocks REG_DWORD 0 or 1 Default: 1 (true) Specifies whether the server allows clients to use oplocks on files. Oplocks are a significant performance enhancement, but have the potential to cause lost cached data on some networks, particularly wide-area networks. By default, the registry entry is 1 (oplock enabled), as a rule of thumb you should set this key to 0 (disable oplock) when sharing files with Xbase++/Clipper/FoxPro and MS-Access. We have not encountered any performance drawbacks in real-world scenarios after having disabled oplocks. However problems with Xbase++ file-based database applications simple went away after re-configuration of the server.
|
|
|
|
| постоянный участник
|
Пост N: 147
Зарегистрирован: 24.09.05
|
|
Отправлено: 23.07.10 14:39. Заголовок: wad1 пишет: На серв..
wad1 пишет: цитата: | На серверах NT-шной линии раньше редактировали реестр: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters] "SharingViolationRetries"=dword:00000001 "SharingViolationDelay"=dword:00000030 |
| спасибо. а на линейке 9x/Me ?
|
|
|
|
| |
Пост N: 1816
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.07.10 15:32. Заголовок: Должен быть какой то..
Должен быть какой то другой способ кроме правки реестра. Для примера антивирус AVZ в мастере поиска и устранения проблем -> Чистка системы + галка на папке TEMP и системной папке TEMP , вовсе не "вешается" а срабатывает довольно быстро в то время как в этих папках может находится кучка залоченных файлов. Нужно пробовать что то из разряда что предложил AndreyZh или же Юра писать какую то свою хитрую функцию на ASM (а ты в этом мастер если не ошибаюсь )
|
|
|
|
| |
Пост N: 30
Зарегистрирован: 11.06.10
|
|
Отправлено: 23.07.10 16:34. Заголовок: Простенький примерчи..
Простенький примерчик (clipper 5.3b) ?fopen("aa.txt",16),time() ?fopen("aa.txt",16),time() inkey(0) Результат, проверял на 98 и ХР handle time 6 16:31:00 -1 16:31:00
|
|
|
|
| |
Пост N: 31
Зарегистрирован: 11.06.10
|
|
Отправлено: 23.07.10 16:42. Заголовок: Dima пишет: А попро..
Dima пишет: цитата: | А попробуй fopen("aa.txt",18) |
| ?fopen("aa.txt",18),time() ?"ferror=",ferror(),time() ?fopen("aa.txt",18),time() ?"ferror=",ferror(),time() inkey(0) Результат xp 6 16:39:39 ferror= 0 16:39:39 -1 16:39:39 ferror= 5 16:39:39 98 6 16:40:47 ferror= 0 16:40:47 -1 16:40:47 ferror= 5 16:40:47
|
|
|
|
| |
Пост N: 32
Зарегистрирован: 11.06.10
|
|
Отправлено: 23.07.10 16:46. Заголовок: А файл случайно не в..
А файл случайно не в сетке лежит?
|
|
|
|
| |
Пост N: 1818
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.07.10 16:49. Заголовок: AlexMyr пишет: А фа..
AlexMyr пишет: цитата: | А файл случайно не в сетке лежит? |
| В сетке PS Хммм , странно , раньше была задержка а сейчас ее нет (файлы лежат на сервере Novell) Полтергейст
|
|
|
|
| постоянный участник
|
Пост N: 1454
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.10 11:17. Заголовок: Dima пишет: файлы л..
Dima пишет: цитата: | файлы лежат на сервере Novell) |
| Для Новела можно воспользоваться функциями семафора, там в NG были они. В свое время пользовался ими.
|
|
|
|
|
| |
Пост N: 1819
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.07.10 11:27. Заголовок: Andrey пишет: Для Н..
Andrey пишет: цитата: | Для Новела можно воспользоваться функциями семафора |
| Библиотеку не напомнишь ? ;)
|
|
|
|
| постоянный участник
|
Пост N: 1469
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.07.10 22:16. Заголовок: Dima пишет: Библиот..
Dima пишет: цитата: | Библиотеку не напомнишь ? ;) |
| Поставка Clipper 5.3 - стандартная... CT2 - функции под НОВЕЛ ! <\/u><\/a>
|
|
|
|
| |
Пост N: 150
Зарегистрирован: 12.11.06
|
|
Отправлено: 24.07.10 23:44. Заголовок: Поставка Clipper 5.3..
цитата: | Поставка Clipper 5.3 - стандартная... CT2 - функции под НОВЕЛ ! |
| Нетучки... Пытался найти в своём "мусоре", но увы. Когда-то до 1993 года мы (мой отдел) использовали покупную библиотеку по Novell и там даже "честные" и работающие транзакции и семафоры были. Но как зовётся уже забыл.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 26.07.10 16:51. Заголовок: suv2 пишет: спасиб..
suv2 пишет: цитата: | спасибо. а на линейке 9x/Me ? |
| Серьезные задержки возникали именно на NT (в качестве сервера). На 98 они не были так заметны. На Novell их также не было (Novell - лучший файл-сервер). Про 9X вопрос почему задан - вы такие машины в качестве серверов используете? Проблема именно на серверной стороне, локальные компьютеры на эту проблему не влияют.
|
|
|
|