Задача: Обеспечить работу только одного OpenServera в один момент времени.
Решение: Запущенный сервер каждую минуту следит за присутствием файла в определенной папке соответствующего его компьютеру и если его нет завершает свою работу... Соответственно при запуске сервера он должен зачистить в спец папке все файлы "чужых" компьютеров и создать свой, при этом гарантировано через минуту закроются все остальные не нужные копии Open Server на других компьютерах...
Реализация:
Всё в папке "OpenServer\userdata"
-Создаем папку "runtime"
-Создаем файл "pre_start.tpl.bat" с содержанием:
del /f /q %realprogdir%\userdata\runtime\*.runing del /f /q %realprogdir%\userdata\runtime\%COMPUTERNAME%.stoped @echo .>%realprogdir%\userdata\runtime\%COMPUTERNAME%.runing-Создаем файл "post_stop.tpl.bat" с содержанием:
del /f /q %realprogdir%\userdata\runtime\%COMPUTERNAME%.runing @echo .>%realprogdir%\userdata\runtime\%COMPUTERNAME%.stoped-Создаем файл "server_test.bat" с содержанием:
@dir %~1\userdata\runtime\%COMPUTERNAME%.runing /a-d >nul 2>nul && ( ECHO SERVER RUNS OK ) || ( "%~1\Open Server.exe" /stop "%~1\Open Server.exe" /exit )- В настройках Планировщика Open Server прописываем запуск скрипта проверки каждую минуту:
Время: */1 * * * *
Выполнить: %COMSPEC% /c %realprogdir%\userdata\server_test.bat %realprogdir%