Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Принудительное завершение программы / 25 сообщений из 60, страница 1 из 3
28.03.2006, 10:22
    #33628806
Stind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Добрый день всем!
Вопрос такой. Ночью проводится переиндексация. Нужен монопольный доступ. Но один ... периодически не выходит из программы в конце работего дня и так и оставляет компьютер на ночь (опечатывая дверь). Уходит он поздно, так что стоять и ждать его невозможно. Есть ли способ с другого компа завершить его программу?
...
Рейтинг: 0 / 0
28.03.2006, 10:26
    #33628817
Feg16
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Если у тебя есть права, то RAdmin тебе в помощь.
...
Рейтинг: 0 / 0
28.03.2006, 10:27
    #33628819
5631
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Объявить ему строгий выговор.
...
Рейтинг: 0 / 0
28.03.2006, 10:32
    #33628833
Valerii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Чья прога? Если твоя, включи на тулбаре таймер, и в указанное время CLOSE DATABASE ALL и прогу не закрывать,а после этого времени, запускай индексации, упаковки прочую лабудень... А хошь, можно потом и QUIT вставить...
...
Рейтинг: 0 / 0
28.03.2006, 11:18
    #33628948
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Пусть сервер выбрасывает пользователей из сети в обусловленное время.
...
Рейтинг: 0 / 0
28.03.2006, 11:28
    #33628999
Stind
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Всем спасибо! Буду экспериментировать.
...
Рейтинг: 0 / 0
30.03.2006, 02:40
    #33633907
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Hi Urri!

Опасно - как раз может "накрыться" таблица при таком жестоком способе.
Программа должна быть закрыта по возможности штатно - для чего как раз и
подойдёт таймер и возможно файл-триггер (как только таймер увидел файл - он
корректно закрывает программу).
Также, если программа написана правильно, и имеет адекватный обработчик ON
SHUTDOWN, то можно просто удалённо выключать/перегружать этот нехороший
компьютер - при штатном завершении сеанса Windows все программы закрываются
(причём не аварийно, а "нормально"). А удалённо перегрузить любую машину не
составляет проблем - например утилитой shutdown ;)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
30.03.2006, 14:24
    #33635186
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Igor Korolyov
Hi Urri!

Опасно - как раз может "накрыться" таблица при таком жестоком способе.
Программа должна быть закрыта по возможности штатно - для чего как раз и
подойдёт таймер и возможно файл-триггер (как только таймер увидел файл - он
корректно закрывает программу).
Также, если программа написана правильно, и имеет адекватный обработчик ON
SHUTDOWN, то можно просто удалённо выключать/перегружать этот нехороший
компьютер - при штатном завершении сеанса Windows все программы закрываются
(причём не аварийно, а "нормально"). А удалённо перегрузить любую машину не
составляет проблем - например утилитой shutdown ;)

Posted via ActualForum NNTP Server 1.3Практика (на Novell) показывает, что не опасно. Главное, чтобы в это время пользователь был неактивен. Ну и еще программа должна быть написана так, чтобы данные начинали и заканчивали писаться в таблицы по одному действию пользователя, а не двум разным. Впрочем, я и сам за штатное закрытие. Т.е. полезно комбинировать выход по таймеру-триггеру и "закрытие" сети.
...
Рейтинг: 0 / 0
02.04.2006, 20:09
    #33639866
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Hi Urri!

Дык оно понятно, что тут главное :) Главное чтобы все данные из буфера
клиента были уже на сервере к моменту "обрезания сети" - но я себе слабо
представляю каким средствами этого можно добиться (не в том смысле, что
"скорее всего данные будут сброшены, т.к. они не будут часами висеть в кэше
клиента", а именно - "100% что данные будут сброшены - при любых условиях").

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
02.04.2006, 23:21
    #33639979
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Ну хорошо, а что будет, если даже закешированные данные будут изменены, но изменения не будут сброшены в базу?
Ежели программа написана с учетом принципов транзакционности, т.е. не допускает промежуточных статусов - разве отрыв клиента от сервера на что-то повлияет? Он же до момента отрыва от сети из базы только читал данные, а правил только свой личный буфер.
...
Рейтинг: 0 / 0
03.04.2006, 06:33
    #33640086
foxwizard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Примерзакрытия формы при неактивности пользователя определенное время.
Не мое!
...
Рейтинг: 0 / 0
04.04.2006, 02:34
    #33642343
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Hi Urri!

> Ну хорошо, а что будет, если даже закешированные данные будут изменены, но
> изменения не будут сброшены в базу?

Проблема не совсем в этом...
Просто процесс "изменения данных" обычно достаточно сложен, и затрагивает не
один файл, а несколько, и что также важно - в рамках одного и того-же файла
меняются разные участки (классический пример с INSERT - меняется заголовок
dbf - счётчик записей и меняется "хвост" dbf - собственно сама запись). Если
разрыв связи произойдёт "посередине", то есть хороший шанс получить сбойную
таблицу. Nowell сам по себе никак такую порчу не отследит - он в структурах
фоксовых файлов не разбирается :) и тем более не знает что "вот это"
изменение в dbf связано с изменениями с cdx и fpt. Так что только
использование явных Nowell-оских транзакций из клиентской программы может
помочь - а этим зачастую пренебрегают, считая что одной лишь установки
транзакционного атрибута на файл будет достаточно... Конечно я предполагаю,
что Nowell+его Win клиент абсолютно корректно обрабатывают ситуацию с
разрывом связи "посередине" выполняющейся (явной) файловой транзакции - хотя
мне кажется, что некорректная настройка сервера и/или клиента могут даже тут
вызывать вопросы.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
04.04.2006, 06:22
    #33642391
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Понятно, Игорь, ты о том, что нельзя отрывать клиента от сети в момент, когда он осуществляет запись. Тут соглашусь.

Короче говоря, уверен, что, хотя из программы не вышли, в ней не работают - отрывай от сети. Не уверен - не отрывай, ибо может(гут) испортиться таблица(ы).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
02.04.2013, 16:18
    #38209472
MaestroEv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
В программе есть таймер. Раз в десять минут проверяет время - если время больше установленного для выхода - пытается завершить программу.

Тут как-то все очень печально. Не всегда завершает. Куда копать? Какой алгоритм? Бывает что открыто куча окон у юзера, кое-где еще работают циклы с разными задачами - запустил отчет и ушел.. Иногда выходит - иногда пишет ошибку, что алиаса нет и все такое.. Потыкал немного, но всех вариантов не испробуешь.. Если в одном закрывает - перестает в другом закрывать. Нужна стратегия. Кто владеет?
...
Рейтинг: 0 / 0
02.04.2013, 16:44
    #38209566
gore-egor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
MaestroEv,

делай предупредительный выстрел в messagebox
если не понял - убивай
...
Рейтинг: 0 / 0
02.04.2013, 16:54
    #38209602
MaestroEv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Хороший метод, но не гуманный. :) Есть что-нить программное?
...
Рейтинг: 0 / 0
02.04.2013, 17:03
    #38209631
gore-egor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
MaestroEvХороший метод, но не гуманный . :) Есть что-нить программное?это почему? перед убийством программно нажимай на кнопки сохранения.
и еще время дай перед тем как ))
...
Рейтинг: 0 / 0
02.04.2013, 17:34
    #38209723
MaestroEv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Я понял, что непонял.. Убивай - вот тут проблема. QUIT по таймеру и прочие CLOSE штуки не ведут к выходу из программы в любом месте. В каждом месте свои нужно делать телодвижения иначе ошибка.
...
Рейтинг: 0 / 0
02.04.2013, 18:37
    #38209837
gore-egor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
MaestroEv,

дежавю
...
Рейтинг: 0 / 0
02.04.2013, 19:40
    #38209938
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
gore-egorMaestroEv,

дежавю
Убивание процесса средствами виндовса допустимо если база на SQL-сервере, если это DBF то чревато тем что фокс может не успеть сбросит все из кэша на диск, как следствие порушатся индексы, возможно какая DBF перестанет открываться.

Думаю стандартного решения у этой проблемы нет, на это надо заранее закладываться. Например в каждой форме предусмотреть метод, вызвав который форма без вопросов закроется. И вызывать этот метод при автозакрытии.
Можно попробовать тупо игнорировать все ошибки при закрытии, но тут тоже нет гарантии что при этом прога не подвиснет и не зациклится.

Если принципиально закрыть любой ценой, то есть смысл скомбинировать оба метода, сначала запускается внешний процесс (сама же прога с каким то параметром), затем начинается штатное закрытие. Задача внешней проги выждать паузу и если после паузы исходный процесс существует - убить его средствами ОС.
...
Рейтинг: 0 / 0
02.04.2013, 22:30
    #38210088
sg12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Dima Tgore-egorMaestroEv,

дежавю
Убивание процесса средствами виндовса допустимо если база на SQL-сервере, если это DBF то чревато тем что фокс может не успеть сбросит все из кэша на диск, как следствие порушатся индексы, возможно какая DBF перестанет открываться.

Думаю стандартного решения у этой проблемы нет, на это надо заранее закладываться. Например в каждой форме предусмотреть метод, вызвав который форма без вопросов закроется. И вызывать этот метод при автозакрытии.
Можно попробовать тупо игнорировать все ошибки при закрытии, но тут тоже нет гарантии что при этом прога не подвиснет и не зациклится.

Если принципиально закрыть любой ценой, то есть смысл скомбинировать оба метода, сначала запускается внешний процесс (сама же прога с каким то параметром), затем начинается штатное закрытие. Задача внешней проги выждать паузу и если после паузы исходный процесс существует - убить его средствами ОС.

Интересные идеи ...
...
Рейтинг: 0 / 0
02.04.2013, 22:31
    #38210089
sg12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
MaestroEvВ программе есть таймер. Раз в десять минут проверяет время - если время больше установленного для выхода - пытается завершить программу.

Тут как-то все очень печально. Не всегда завершает. Куда копать? Какой алгоритм? Бывает что открыто куча окон у юзера, кое-где еще работают циклы с разными задачами - запустил отчет и ушел.. Иногда выходит - иногда пишет ошибку, что алиаса нет и все такое.. Потыкал немного, но всех вариантов не испробуешь.. Если в одном закрывает - перестает в другом закрывать. Нужна стратегия. Кто владеет?

Это вами написанная программа или вы осваиваете чужую?
У вас в программе должны быть стандартные процедуры выхода из нее по ON SHUTDOWN, при критических ошибках, от кнопок, из меню и т.п.
В том числе должно быть закрытие всех открытых окон и таблиц.
По идее, для вашего таймера должна быть такая же стратегия, с подкорректировкой нюансов.
...
Рейтинг: 0 / 0
03.04.2013, 00:33
    #38210189
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
...
Рейтинг: 0 / 0
04.04.2013, 03:01
    #38212072
MaestroEv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Принудительное завершение программы
Что ж мы сразу то или убить пользователя или убить процесс.

Ладно, упростим задачу. Выключить надо не резко, а в принципе. Ночь большая. Выключить и все. Дождаться всех незавершенных циклов если есть и выключить так как это бы сделал юзер последовательно закрывая все окошки и нажав <выход>.

Серверу утром нужен монопольный режим и у нас вся ночь на выход из программы.
Давайте опишем стратегию, а не реализацию. К реализации перейдем после понимания того что, когда и где надо делать.
...
Рейтинг: 0 / 0
04.04.2013, 07:22
    #38212117
Принудительное завершение программы
MaestroEvЧто ж мы сразу то или убить пользователя или убить процесс.

Ладно, упростим задачу. Выключить надо не резко, а в принципе. Ночь большая. Выключить и все. Дождаться всех незавершенных циклов если есть и выключить так как это бы сделал юзер последовательно закрывая все окошки и нажав <выход>.

Серверу утром нужен монопольный режим и у нас вся ночь на выход из программы.
Давайте опишем стратегию, а не реализацию. К реализации перейдем после понимания того что, когда и где надо делать.
1. И как Вы собираетесь это отслеживать незавершенные циклы? Единственное решение - писать куда-то стек активных (работающих) процедур и функций... А если программа вдруг ушла в "бесконечный цикл" (мало ли, иногда встречается даже на давно работающих программах)?
2. Как Вы собираетесь выключать программу? Программа = "черный ящик". А вся интерактивность - она находится внутри программы. И повлиять на ее завершение иначе как принудительно "убив" процесс Вы не можете. Если же Вы будете ждать завершения программы, которая в свою очередь ждет действий от пользователя (например, ввод недостающих для расчета данных), то рискуете ничего не дождаться.

По-моему, есть только одно адекватное решение Вашей ситуации: отойти от Фокса и оформлять все Ваши программы в виде сервисов Windows. Тогда Вы сможете послать им сигнал завершения (соответствующий ключ в командной строке), а программа сможет корректно завершить свою работу...
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Принудительное завершение программы / 25 сообщений из 60, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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