Я использую XAMPP для запуска Apache, PHP и MySQL на нескольких удаленных ноутбуках для наших клиентов. Это просто каталог XAMPP со всеми файлами (версия флэш-накопителя, значения реестра не добавляются и не изменяются). У меня есть установочный файл, который помещает на рабочий стол пользователя значок, запускающий start.bat из каталога XAMPP. Start.bat в основном запускает Apache, затем MySQL, а затем открывает браузер для localhost. Все работает отлично, за исключением того, что при втором щелчке по значку запускается вторая служба mysqld.exe. Apache не запускается дважды, если дважды щелкнуть значок, но MySQL запускается. Я попробовал несколько предложений Google и Stack Overflow, чтобы проверить, запущена ли служба, и, если да, остановить повторный запуск службы; однако ни один из них не работал.
Пакетный файл, запускающий MySQL, в основном содержит одну команду:
mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --standalone --console
Как я могу предотвратить запуск mysqld.exe дважды? Кроме того, это большая проблема, если он запускается дважды? Будет ли это вызывать какие-либо проблемы при выполнении запроса из PHP?
Я также разместил это на StackOverflow (один из наших разработчиков задал тот же вопрос). Вот ответ, который я нашел путем проб и ошибок (и молитв!):
Измените mysql_start.bat, чтобы получить это содержимое:
@echo off
apache\bin\pv mysqld.exe %1 >nul
if ERRORLEVEL 1 goto Process_NotFound
echo MySQL is running
goto END
:Process_NotFound
echo Process %1 is not running
mysql\bin\mysqld.exe --defaults-file=mysql\bin\my.ini --standalone --console
goto finish
:finish
Это проверяет, запущена ли служба, и запускает ее, если нет.