Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP重启Mysql_Php_Mysql - Fatal编程技术网

用PHP重启Mysql

用PHP重启Mysql,php,mysql,Php,Mysql,是否可以使用PHP重新启动MySQL 我有一个网站需要经常重启MySQL,因为它使用了很多资源。我在这个网站上保存了很多网页(大约3000个)的源代码,当我使用我的内部搜索表单时,他工作效率很低,因为有很多信息需要分析,所以搜索后我需要重新启动我的MySQL服务器 源PHP: $sql = "SELECT * FROM site WHERE adresse LIKE ? || source LIKE ? ORDER BY ID DESC"; $requete = $bdd->prepare

是否可以使用PHP重新启动MySQL

我有一个网站需要经常重启MySQL,因为它使用了很多资源。我在这个网站上保存了很多网页(大约3000个)的源代码,当我使用我的内部搜索表单时,他工作效率很低,因为有很多信息需要分析,所以搜索后我需要重新启动我的MySQL服务器

源PHP:

$sql = "SELECT * FROM site WHERE adresse LIKE ? || source LIKE ? ORDER BY ID DESC";
$requete = $bdd->prepare($sql);
$requete->execute(array("%".$_GET['recherche']."%", "%".$_GET['recherche']."%"));

exec
是否允许重新启动MySQL以及如何重新启动?

exec将仅在运行PHP(通常是www数据)的系统用户有权重新启动MySQL守护程序时执行此任务

在*nix平台上,可以通过使用visudo命令和附加
www-data-ALL=NOPASSWD:/etc/init.d/mysql(mysql的平台特定路径)


但是,不建议授予web服务器用户这样做的权利,您可能应该通过重新启动mysql守护程序来质疑“解决方案”。

是的,这是可能的。如何操作取决于您正在运行的操作系统。 一种方法是使用PHP exec函数来执行外部程序

正如我所说,要执行的命令取决于操作系统。以下是命令(如果我正确,请告诉我是否正确):

Debian/Ubuntu:

/etc/init.d/mysql restart
Mac OS X

/usr/local/mysql/support-files/mysql.server restart
窗口

net stop MySQL
net start MySQL
在Windows上,MySQL可能会有所不同。如果这不适用于您,请查看以下问题:

另一种方法可能是通过SSH使用SSH PHP扩展,这需要首先安装。看看:

然后连接到SSH服务器并执行以下命令:

 $con = ssh2_connect("example.com", 22); // Connect to SSH server
 $exec = ssh2_exec($con, "/etc/init.d/mysql restart"); // Execute command 

希望这对您有所帮助;)

重新启动mysql有点脏。您希望查找“资源泄漏”(例如,缺少对连接的关闭调用)。如果你找不到错误的原因,你可能想暂停那些似乎打开时间过长的连接。我认为你是在试图治愈症状,而不是真正的疾病。您应该调查mysql如此消耗资源的原因。好的,我将在我的代码中搜索问题。提示:由于代码路径错误,通常不会调用close()。有时返回会阻止调用,有时if/else语句不允许每个案例执行该行。但首先,尝试诊断是什么导致了资源膨胀。是死连接吗?是别的吗?读:好的,我不会给我的服务器重新启动MySQLI的权限,我不知道我可以用SSH和PHP。谢谢你的回答!使用一种不安全的PHP脚本(参见#0中的mysql注入注释)将SSH连接到服务器可能是您最不想做的事情。还有,为什么要用SSH连接到“本地主机”?@ManuelArwedSchmidt他问我这样做的方法。宋承宪就是其中之一。我也不会对localhost使用SSH。你能解释一下为什么这个PHP脚本不安全吗?这个看起来不错。只是他最初的帖子显示了字符串压缩的问题,这在将此类字符串传递到exec()或sssh2_exec()时是一个大问题。您可能会从反对票中注意到,SO社区出于各种原因不同意重新启动mysql。这就是为什么我们没有发布答案,而是尝试将tipps发送给to。