Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
28.03.2006, 10:22
|
|||
---|---|---|---|
|
|||
Принудительное завершение программы |
|||
#18+
Добрый день всем! Вопрос такой. Ночью проводится переиндексация. Нужен монопольный доступ. Но один ... периодически не выходит из программы в конце работего дня и так и оставляет компьютер на ночь (опечатывая дверь). Уходит он поздно, так что стоять и ждать его невозможно. Есть ли способ с другого компа завершить его программу? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.03.2006, 10:26
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
Если у тебя есть права, то RAdmin тебе в помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.03.2006, 10:27
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
Объявить ему строгий выговор. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.03.2006, 10:32
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
Чья прога? Если твоя, включи на тулбаре таймер, и в указанное время CLOSE DATABASE ALL и прогу не закрывать,а после этого времени, запускай индексации, упаковки прочую лабудень... А хошь, можно потом и QUIT вставить... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.03.2006, 11:18
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
Пусть сервер выбрасывает пользователей из сети в обусловленное время. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.03.2006, 11:28
|
|||
---|---|---|---|
|
|||
Принудительное завершение программы |
|||
#18+
Всем спасибо! Буду экспериментировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2006, 02:40
|
|||
---|---|---|---|
|
|||
Принудительное завершение программы |
|||
#18+
Hi Urri! Опасно - как раз может "накрыться" таблица при таком жестоком способе. Программа должна быть закрыта по возможности штатно - для чего как раз и подойдёт таймер и возможно файл-триггер (как только таймер увидел файл - он корректно закрывает программу). Также, если программа написана правильно, и имеет адекватный обработчик ON SHUTDOWN, то можно просто удалённо выключать/перегружать этот нехороший компьютер - при штатном завершении сеанса Windows все программы закрываются (причём не аварийно, а "нормально"). А удалённо перегрузить любую машину не составляет проблем - например утилитой shutdown ;) Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.03.2006, 14:24
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
Igor Korolyov Hi Urri! Опасно - как раз может "накрыться" таблица при таком жестоком способе. Программа должна быть закрыта по возможности штатно - для чего как раз и подойдёт таймер и возможно файл-триггер (как только таймер увидел файл - он корректно закрывает программу). Также, если программа написана правильно, и имеет адекватный обработчик ON SHUTDOWN, то можно просто удалённо выключать/перегружать этот нехороший компьютер - при штатном завершении сеанса Windows все программы закрываются (причём не аварийно, а "нормально"). А удалённо перегрузить любую машину не составляет проблем - например утилитой shutdown ;) Posted via ActualForum NNTP Server 1.3Практика (на Novell) показывает, что не опасно. Главное, чтобы в это время пользователь был неактивен. Ну и еще программа должна быть написана так, чтобы данные начинали и заканчивали писаться в таблицы по одному действию пользователя, а не двум разным. Впрочем, я и сам за штатное закрытие. Т.е. полезно комбинировать выход по таймеру-триггеру и "закрытие" сети. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2006, 20:09
|
|||
---|---|---|---|
|
|||
Принудительное завершение программы |
|||
#18+
Hi Urri! Дык оно понятно, что тут главное :) Главное чтобы все данные из буфера клиента были уже на сервере к моменту "обрезания сети" - но я себе слабо представляю каким средствами этого можно добиться (не в том смысле, что "скорее всего данные будут сброшены, т.к. они не будут часами висеть в кэше клиента", а именно - "100% что данные будут сброшены - при любых условиях"). Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2006, 23:21
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
Ну хорошо, а что будет, если даже закешированные данные будут изменены, но изменения не будут сброшены в базу? Ежели программа написана с учетом принципов транзакционности, т.е. не допускает промежуточных статусов - разве отрыв клиента от сервера на что-то повлияет? Он же до момента отрыва от сети из базы только читал данные, а правил только свой личный буфер. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.04.2006, 06:33
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
Примерзакрытия формы при неактивности пользователя определенное время. Не мое! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
04.04.2006, 02:34
|
|||
---|---|---|---|
|
|||
Принудительное завершение программы |
|||
#18+
Hi Urri! > Ну хорошо, а что будет, если даже закешированные данные будут изменены, но > изменения не будут сброшены в базу? Проблема не совсем в этом... Просто процесс "изменения данных" обычно достаточно сложен, и затрагивает не один файл, а несколько, и что также важно - в рамках одного и того-же файла меняются разные участки (классический пример с INSERT - меняется заголовок dbf - счётчик записей и меняется "хвост" dbf - собственно сама запись). Если разрыв связи произойдёт "посередине", то есть хороший шанс получить сбойную таблицу. Nowell сам по себе никак такую порчу не отследит - он в структурах фоксовых файлов не разбирается :) и тем более не знает что "вот это" изменение в dbf связано с изменениями с cdx и fpt. Так что только использование явных Nowell-оских транзакций из клиентской программы может помочь - а этим зачастую пренебрегают, считая что одной лишь установки транзакционного атрибута на файл будет достаточно... Конечно я предполагаю, что Nowell+его Win клиент абсолютно корректно обрабатывают ситуацию с разрывом связи "посередине" выполняющейся (явной) файловой транзакции - хотя мне кажется, что некорректная настройка сервера и/или клиента могут даже тут вызывать вопросы. Posted via ActualForum NNTP Server 1.3 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
04.04.2006, 06:22
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
Понятно, Игорь, ты о том, что нельзя отрывать клиента от сети в момент, когда он осуществляет запись. Тут соглашусь. Короче говоря, уверен, что, хотя из программы не вышли, в ней не работают - отрывай от сети. Не уверен - не отрывай, ибо может(гут) испортиться таблица(ы). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2013, 16:18
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
В программе есть таймер. Раз в десять минут проверяет время - если время больше установленного для выхода - пытается завершить программу. Тут как-то все очень печально. Не всегда завершает. Куда копать? Какой алгоритм? Бывает что открыто куча окон у юзера, кое-где еще работают циклы с разными задачами - запустил отчет и ушел.. Иногда выходит - иногда пишет ошибку, что алиаса нет и все такое.. Потыкал немного, но всех вариантов не испробуешь.. Если в одном закрывает - перестает в другом закрывать. Нужна стратегия. Кто владеет? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2013, 16:44
|
|||
---|---|---|---|
|
|||
Принудительное завершение программы |
|||
#18+
MaestroEv, делай предупредительный выстрел в messagebox если не понял - убивай ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2013, 16:54
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
Хороший метод, но не гуманный. :) Есть что-нить программное? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2013, 17:03
|
|||
---|---|---|---|
|
|||
Принудительное завершение программы |
|||
#18+
MaestroEvХороший метод, но не гуманный . :) Есть что-нить программное?это почему? перед убийством программно нажимай на кнопки сохранения. и еще время дай перед тем как )) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2013, 17:34
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
Я понял, что непонял.. Убивай - вот тут проблема. QUIT по таймеру и прочие CLOSE штуки не ведут к выходу из программы в любом месте. В каждом месте свои нужно делать телодвижения иначе ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2013, 18:37
|
|||
---|---|---|---|
|
|||
Принудительное завершение программы |
|||
#18+
MaestroEv, дежавю ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2013, 19:40
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
gore-egorMaestroEv, дежавю Убивание процесса средствами виндовса допустимо если база на SQL-сервере, если это DBF то чревато тем что фокс может не успеть сбросит все из кэша на диск, как следствие порушатся индексы, возможно какая DBF перестанет открываться. Думаю стандартного решения у этой проблемы нет, на это надо заранее закладываться. Например в каждой форме предусмотреть метод, вызвав который форма без вопросов закроется. И вызывать этот метод при автозакрытии. Можно попробовать тупо игнорировать все ошибки при закрытии, но тут тоже нет гарантии что при этом прога не подвиснет и не зациклится. Если принципиально закрыть любой ценой, то есть смысл скомбинировать оба метода, сначала запускается внешний процесс (сама же прога с каким то параметром), затем начинается штатное закрытие. Задача внешней проги выждать паузу и если после паузы исходный процесс существует - убить его средствами ОС. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2013, 22:30
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
Dima Tgore-egorMaestroEv, дежавю Убивание процесса средствами виндовса допустимо если база на SQL-сервере, если это DBF то чревато тем что фокс может не успеть сбросит все из кэша на диск, как следствие порушатся индексы, возможно какая DBF перестанет открываться. Думаю стандартного решения у этой проблемы нет, на это надо заранее закладываться. Например в каждой форме предусмотреть метод, вызвав который форма без вопросов закроется. И вызывать этот метод при автозакрытии. Можно попробовать тупо игнорировать все ошибки при закрытии, но тут тоже нет гарантии что при этом прога не подвиснет и не зациклится. Если принципиально закрыть любой ценой, то есть смысл скомбинировать оба метода, сначала запускается внешний процесс (сама же прога с каким то параметром), затем начинается штатное закрытие. Задача внешней проги выждать паузу и если после паузы исходный процесс существует - убить его средствами ОС. Интересные идеи ... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.04.2013, 22:31
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
MaestroEvВ программе есть таймер. Раз в десять минут проверяет время - если время больше установленного для выхода - пытается завершить программу. Тут как-то все очень печально. Не всегда завершает. Куда копать? Какой алгоритм? Бывает что открыто куча окон у юзера, кое-где еще работают циклы с разными задачами - запустил отчет и ушел.. Иногда выходит - иногда пишет ошибку, что алиаса нет и все такое.. Потыкал немного, но всех вариантов не испробуешь.. Если в одном закрывает - перестает в другом закрывать. Нужна стратегия. Кто владеет? Это вами написанная программа или вы осваиваете чужую? У вас в программе должны быть стандартные процедуры выхода из нее по ON SHUTDOWN, при критических ошибках, от кнопок, из меню и т.п. В том числе должно быть закрытие всех открытых окон и таблиц. По идее, для вашего таймера должна быть такая же стратегия, с подкорректировкой нюансов. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.04.2013, 00:33
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
|
04.04.2013, 03:01
|
|||
---|---|---|---|
Принудительное завершение программы |
|||
#18+
Что ж мы сразу то или убить пользователя или убить процесс. Ладно, упростим задачу. Выключить надо не резко, а в принципе. Ночь большая. Выключить и все. Дождаться всех незавершенных циклов если есть и выключить так как это бы сделал юзер последовательно закрывая все окошки и нажав <выход>. Серверу утром нужен монопольный режим и у нас вся ночь на выход из программы. Давайте опишем стратегию, а не реализацию. К реализации перейдем после понимания того что, когда и где надо делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
04.04.2013, 07:22
|
|||
---|---|---|---|
|
|||
Принудительное завершение программы |
|||
#18+
MaestroEvЧто ж мы сразу то или убить пользователя или убить процесс. Ладно, упростим задачу. Выключить надо не резко, а в принципе. Ночь большая. Выключить и все. Дождаться всех незавершенных циклов если есть и выключить так как это бы сделал юзер последовательно закрывая все окошки и нажав <выход>. Серверу утром нужен монопольный режим и у нас вся ночь на выход из программы. Давайте опишем стратегию, а не реализацию. К реализации перейдем после понимания того что, когда и где надо делать. 1. И как Вы собираетесь это отслеживать незавершенные циклы? Единственное решение - писать куда-то стек активных (работающих) процедур и функций... А если программа вдруг ушла в "бесконечный цикл" (мало ли, иногда встречается даже на давно работающих программах)? 2. Как Вы собираетесь выключать программу? Программа = "черный ящик". А вся интерактивность - она находится внутри программы. И повлиять на ее завершение иначе как принудительно "убив" процесс Вы не можете. Если же Вы будете ждать завершения программы, которая в свою очередь ждет действий от пользователя (например, ввод недостающих для расчета данных), то рискуете ничего не дождаться. По-моему, есть только одно адекватное решение Вашей ситуации: отойти от Фокса и оформлять все Ваши программы в виде сервисов Windows. Тогда Вы сможете послать им сигнал завершения (соответствующий ключ в командной строке), а программа сможет корректно завершить свою работу... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/search_topic.php?author=%29%29%29&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 444ms |
total: | 628ms |
0 / 0 |