On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 1724
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.03.11 10:45. Заголовок: Парадокс проверки... или кривой код ?


Всем привет.
Столкнулся с пробемой запуска программы месяца 2 назад. Небольшое пояснение: в фирме стоит моя сетевая программа.
В качестве антивируса официальный DRWEB на всех компах, обновлется через инет. Проверку моей папки ВООБЩЕ отключили.
На 2 компах (98 и ХР) моя прога запускается сразу (меньше минуты),
а на других 3 (ХР) - тормоза, запуск примерно минут через 20 !!!
Грешил на сеть, свич и т.д.
А ларчик просто открылся. Сделал трасировку задачи (написал запись в лог-файл время выполнения всех функций при запуске).
И выяснил, что единственный тормоз это функция - Проверки запуска предыдущей копии программы !!!
Время ее выполнения 20 мнут в среднем... Почему, непонятно ?
Код программы хХарбор 1.0+BCC привожу :http://zalil.ru/30765956

Кто подскажет как исправить систему или код ?
Переставлять систему не могу, стоит банк-клиент, бухгалтерская прога и т.д. Все компы рабочие, не тормозят...

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 51 , стр: 1 2 3 All [только новые]


постоянный участник


Пост N: 641
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 14.12.11 09:21. Заголовок: Петр пишет: Читать ..


Петр пишет:

 цитата:
Читать до просветления


Мда... ФайндВиндоу несколько не то, как оказалось... Читаем дальше. Спасибо, Петр!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 642
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 14.12.11 11:47. Заголовок: Петр, где можно проч..


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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1039
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 14.12.11 16:05. Заголовок: PSP пишет: где можн..


PSP пишет:

 цитата:
где можно прочитать о функциях работы с мютексами в Харборе


Даже и не знаю, что написать.
Если мне не изменяет память, была в почтовой рассылке harbour-dev переписка между Пржемеком (Przemyslaw Czerpak) и Миндаугасом (Mindaugas Kavaliauskas) на эту тему. Но у меня ссылки нет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 276
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 14.12.11 16:59. Заголовок: Решить проблему запу..


Решить проблему запуска не более одного экземпляра программы можно по-другому, без поиска окон. Запускаемый экземпляр программы открывает монопольно на компе ( при чем не важно где находится exe в сети или на рабочей станции) сигнальную таблицу, к примеру ...\temp\start.dbf. Если ее нет - создает.Второй экземпляр программы то же повторить не сможет. Естестственно, надо предусмотреть в подобных случаях обработку ошибок, выдачу сообщений и т.п. , чтобы пользователю было ясно, что он неправильно сделал. Подобным образом можно контролировать и вход по одному ЛОГИНУ не более одного человека.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 2231
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 14.12.11 17:46. Заголовок: PSP http://clipper...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 643
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 14.12.11 18:33. Заголовок: Дима, спасибо за ссы..


Петр, спасибо!
Дима, спасибо за ссылку!
Я подразумевал некий мануал... Понимаю, что далеко не всегда он имеется.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1971
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.12.11 20:14. Заголовок: Vlad04 пишет: Реши..


Vlad04 пишет:

 цитата:

Решить проблему запуска не более одного экземпляра программы можно по-другому, без поиска окон. Запускаемый экземпляр программы открывает монопольно на компе ( при чем не важно где находится exe в сети или на рабочей станции) сигнальную таблицу, к примеру ...\temp\start.dbf. Если ее нет - создает.Второй экземпляр программы то же повторить не сможет.



Такое же я делал на Клипере. Иногда сбоит. При слете программы на некоторых системах, включая ХР база остается блокированной.
Юзера не знали что делать... Помогала только перезагрузка компа.
Переделал на другой вариант, который представлен выше.
Разные программы с таким вариантом "определения повторного запуска" работает на более 100 компов в различных городах.
И только в ОДНОМ месте у меня такой "затык" !!!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 277
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 15.12.11 07:18. Заголовок: И только в ОДНОМ мес..



 цитата:
И только в ОДНОМ месте у меня такой "затык" !!!


Значит в операционке "косяки". Переустановить

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 644
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 15.12.11 07:56. Заголовок: Vlad04 пишет: Значи..


Vlad04 пишет:

 цитата:
Значит в операционке "косяки". Переустановить


Это не на одном компе, как я понял. Это - "в ОДНОМ месте" на нескольких компах.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1972
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.12.11 08:54. Заголовок: PSP пишет: Это не н..


PSP пишет:

 цитата:
Это не на одном компе, как я понял. Это - "в ОДНОМ месте" на нескольких компах.



Да, правильно. В одно месте на 6-ти компах.
Планирую привезти туда свой ноутбук (акция - "подцепи себе трояна" ) и посмотреть как будет работать программа на чистой операционке.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 645
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 15.12.11 08:55. Заголовок: А вот все-таки, Андр..


А вот все-таки, Андрей, ты локально запускаешь прогу или из сети?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1973
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.12.11 09:38. Заголовок: PSP пишет: А вот вс..


PSP пишет:

 цитата:
А вот все-таки, Андрей, ты локально запускаешь прогу или из сети?



Прога сетевая. Клиентское место (ехе-ник) запускаю локально.



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 50
Зарегистрирован: 18.02.11
ссылка на сообщение  Отправлено: 15.12.11 12:55. Заголовок: Андрей, воспользуйся..


Андрей, воспользуйся CreateFile из Win API с атрибутом FILE_ATTRIBUTE_TEMPORARY. Файл существкет пока есть его handler, т.е. пока работает приложение (или сам не закроешь handler).

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1040
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.12.11 13:54. Заголовок: Andrey пишет: Плани..


Andrey пишет:

 цитата:
Планирую привезти туда свой ноутбук


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

Очень интересно, у них там на каждом рабочем месте запускают FireBird и MySQL, сервер лицензий FineReader, Radmin и TeamViewer, плюс ко всему Skype и ISQ?


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1974
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.12.11 16:09. Заголовок: Петр пишет: Очень и..


Петр пишет:

 цитата:
Очень интересно, у них там на каждом рабочем месте запускают FireBird и MySQL, сервер лицензий FineReader, Radmin и TeamViewer, плюс ко всему Skype и ISQ?



FireBird и MySQL - только на этом удаленном компе, удалил уже их.
Radmin - на всех компах
TeamViewer + Skype - только на этом компе, чтоб через инет доступ был, по очистке.
ISQ - только на нем.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 279
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 16.12.11 05:28. Заголовок: SergejKis воспользу..


SergejKis

 цитата:
воспользуйся CreateFile из Win API с атрибутом FILE_ATTRIBUTE_TEMPORARY.


А в коде Харбор как это будет выглядеть?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1041
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 16.12.11 11:06. Заголовок: Vlad04 пишет: А в к..


Vlad04 пишет:

 цитата:
А в коде Харбор как это будет выглядеть?


А в Harbour есть функция hb_dbCreateTemp()

hb_dbCreateTemp() - create temporary table which are automatically deleted on close. All indexes and
memo files for such tables are also in temporary files and automatically deleted on close.
Please remember that Harbour uses OS functions to create temporary files so it's installation dependent
how much disk space is available for them.
Some RDDs may also do not create temporary files but keep everything in memory if they
decide it's more efficient.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 280
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 16.12.11 12:58. Заголовок: ок. Спасибо, учтем..


ок. Спасибо, учтем

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 646
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 16.12.11 14:26. Заголовок: Петр пишет: А в Har..


Петр пишет:

 цитата:
А в Harbour есть функция hb_dbCreateTemp()


Она вряд ли подойдет для целей, обсуждаемых в этой теме. Файл создается со случайным именем, узнать которое невозможно.
hb_dbCreateTemp( <cAlias>, <aStruct>, <cRDD>, <cCodePage>, <nConnection> ) -> <lSuccess>


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1044
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 16.12.11 17:55. Заголовок: PSP пишет: Она вряд..


PSP пишет:

 цитата:
Она вряд ли подойдет для целей, обсуждаемых в этой теме. Файл создается со случайным именем, узнать которое невозможно.


Если сильно хочется, то почему нет?

hb_dbCreateTemp, hb_FTempCreate, hb_FTempCreateEx + куча функций для роботы с файлами, добавленных в Harbour - используйте, как душа пожелает

Возвращаясь к

 цитата:
воспользуйся CreateFile из Win API с атрибутом FILE_ATTRIBUTE_TEMPORARY.


атрибут FILE_ATTRIBUTE_TEMPORARY можно установить так.
#include "fileio.ch" 

FUNCTION test()
LOCAL hFile, cName, nAttr := 20

cName := hb_dirBase() + "~semaphore"
FErase( cName )

hFile := hb_FCreate( cName, FC_HIDDEN, FO_EXCL + FO_EXCLUSIVE )
IF hFile != F_ERROR
FWrite( hFile, "RkN" + hb_eol(), 5 )
wapi_SetFileAttributes( cName, HB_FA_NOTINDEXED + HB_FA_TEMPORARY )

hb_FGetAttr( cName, @nAttr )
IF nAttr != 0x2120
? "Sorry again.."
RETURN .F.
ENDIF

RETURN .T.
ENDIF

RETURN .F.

#pragma BEGINDUMP

#include "hbapi.h"
#include "hbvm.h"
#include "hbapifs.h"

#if defined( HB_OS_WIN )
#include "windows.h"

HB_FUNC( WAPI_SETFILEATTRIBUTES )
{
const char * pszFileName = hb_parcx( 1 );
HB_FATTR ulAttr = hb_parnl( 2 );
HB_BOOL fResult;
char * pszFree;

HB_TRACE(HB_TR_DEBUG, ("wapi_SetFileAttributes(%s, %u)", pszFileName, ulAttr));

pszFileName = hb_fsNameConv( pszFileName, &pszFree );

hb_vmUnlock();

{
LPTSTR lpFilename = HB_TCHAR_CONVTO( pszFileName );
DWORD dwFlags = FILE_ATTRIBUTE_ARCHIVE;

if( ulAttr & HB_FA_HIDDEN )
dwFlags |= FILE_ATTRIBUTE_HIDDEN;
if( ulAttr & HB_FA_NORMAL )
dwFlags |= FILE_ATTRIBUTE_NORMAL;
if( ulAttr & HB_FA_NOTINDEXED )
dwFlags |= FILE_ATTRIBUTE_NOT_CONTENT_INDEXED;
if( ulAttr & HB_FA_OFFLINE )
dwFlags |= FILE_ATTRIBUTE_OFFLINE;
if( ulAttr & HB_FA_READONLY )
dwFlags |= FILE_ATTRIBUTE_READONLY;
if( ulAttr & HB_FA_SYSTEM )
dwFlags |= FILE_ATTRIBUTE_SYSTEM;
if( ulAttr & HB_FA_TEMPORARY )
dwFlags |= FILE_ATTRIBUTE_TEMPORARY;

fResult = SetFileAttributes( lpFilename, dwFlags ) != 0;
hb_fsSetIOError( fResult, 0 );

HB_TCHAR_FREE( lpFilename );
}

hb_vmLock();

if( pszFree )
hb_xfree( pszFree );

hb_retl( fResult );
}
#endif

#pragma ENDDUMP

Из-за кросплатформенности hb_FSetAttr просто игнорирует некоторые специфичные файловые атрибуты, по этому пришлось написать обертку к SetFileAttributes().
Результат дополнительно можно перепроверить так (XP и выше)
fsutil usn readdata ~semaphore
или в Far-e Файлы->Атрибуты файлов
или другим доступным вам методом
Почитать о атрибутах файла можна здесь click here

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

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 51 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 17
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет