我正在使用 XAMPP 在一组远程笔记本电脑上运行 Apache、PHP 和 MySQL,供我们的客户使用。它只是包含所有文件的 XAMPP 目录(拇指驱动器版本,没有添加或修改注册表值)。我有一个安装文件,它将一个图标放在用户的桌面上,该图标从 XAMPP 目录运行 start.bat。Start.bat 基本上启动 Apache,然后启动 MySQL,然后打开浏览器到本地主机。一切正常,只是当第二次单击图标时,第二个 mysqld.exe 服务启动。如果两次单击图标,Apache 不会启动两次,但 MySQL 会启动。我尝试了几种 Google 和 Stack Overflow 建议来检查服务是否正在运行,如果是,则阻止服务再次启动;但是,这些都不起作用。
启动MySQL的批处理文件基本上有这个命令:
mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --standalone --console
我如何防止 mysqld.exe 启动两次?另外,如果它运行两次,会有什么大不了的吗?从 PHP 运行查询时,这会导致任何问题吗?
答案1
我也在 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
这将检查服务是否正在运行,如果没有,则启动它。