Страница 2 из 3

Добавлено: 15 мар 2013, 00:28
Coldi
Тоесть? Максим, у меня даже при перезагрузки ОПена слетают базы... Убийство как я понимаю не будут же корректно завершать процесс?!

Добавлено: 15 мар 2013, 10:55
Максим
Нет, при ручном выключении или рестарте базы будут выключаться нормально. Но вот при выключении компа процесс будет убиваться и базы не завершатся корректно, однако по идее при следующем вкбючении база будет сама себя восстанавливать. Сейчас слетают да, но это просто ошибка опенсервер.

Добавлено: 15 мар 2013, 19:05
Alain Delon
Вижу выложена версия 4.8.2.
Максим писал(а):Я выложу файлы обновления и для 4.8.0 до версии 4.8.2
Файлы будут? :roll:

Добавлено: 15 мар 2013, 19:15
Максим
http://open-server.ru/fix/fix482.rar

Распакуйте в папку с Open Server. Фикс перепишет все ваши настройки, как модулей, так и дефолтного профиля. Все созданные профили, кроме дефолтного, надо удалить и создать заново если вы их использовали. Для 4.8.0 и 4.8.1 до 4.8.2.

Добавлено: 15 мар 2013, 19:16
Alain Delon
Благодарю :)

Добавлено: 15 мар 2013, 19:50
DelphinPRO
Максим писал(а):Нет, при ручном выключении или рестарте базы будут выключаться нормально. Но вот при выключении компа процесс будет убиваться и базы не завершатся корректно,
а чем отличаются эти варианты?
Если вы можете нормально завершить работы БД при выключении серевера, то что мешает вам сделать тоже самое, перехватив системное сообщение WM_QUERYENDSESSION ?

Добавлено: 15 мар 2013, 20:06
Максим
:? WM_QUERYENDSESSION здесь никак не поможет. Это сообщение должны обрабатывать сами движки баз, а не Open Server. Если Open Server попытается выключить базы во время получения WM_QUERYENDSESSION, то будет уже нечего выключать, другие процессы к этому времени уже закроются, ведь процессы баз завершаются мгновенно. Почему? Базы не обрабатывают WM_QUERYENDSESSION и WM_ENDSESSION, что система воспринимает как готовность к выключению и моментом их убивает.

Разработчики движков баз данных сделали нормальную работу своих творений только в качестве сервисов под Windows, остальное не реализовано.

Я теперь даже в справке специально написал, что если вырубаете комп, то нужно выключать сервер вручную, потом уже компьютер. Иначе может быть порча баз.

Добавлено спустя 7 минут 7 секунд:
Есть два вида работы с модулями, как с сервисами или как с обычными процессами. Сервисы нормально останавливаются самой Windows при выключении, процессы запущенные вручную нет. Обычные процессы дают портативность без выключения, а сервисы дают нормальное выключение без портативности. Я думаю уж лучше будет портативность.

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

Добавлено: 15 мар 2013, 20:26
DelphinPRO
а, понял, к тому времени, как ты получишь WM_QUERYENDSESSION драйвер БД уже вырубится системой?

Добавлено: 15 мар 2013, 20:40
Максим
DelphinPRO писал(а):а, понял, к тому времени, как ты получишь WM_QUERYENDSESSION драйвер БД уже вырубится системой?
Ну практически так. WM_QUERYENDSESSION рассылается всем одновременно, если на него нет ответа то той программе сразу шлется WM_ENDSESSION, потому Windows убивает модули еще до того, как я чего-то захочу с ними сделать.

Добавлено: 16 мар 2013, 23:22
dimka666
А если себя первым в очереди поставить через SetProcessShutdownParameters - тоже не работает ?