我知道这个话题已经讨论了很多时间。但我需要帮助。 我的目标是从后台文件恢复MySQL数据库
为了从 shell 中生成它,我使用这样的脚本:
nohup mysql --host=localhost --default-character-set=utf8 --user=root --password=dbroot my_databse_name < dump.sql 2> /dev/null & echo $!
而且它有效。此命令从后台文件恢复我的数据库。 但是当我尝试将其放入 PHP 文件并调用 shell_exec 时,我的 php 脚本会等待操作结束。 这是代码(test.php):
<?php
$cmd = "mysql --host=localhost --default-character-set=utf8 --user=root --password=dbroot my_databse_name < dump.sql";
$command = "nohup $cmd 2> /dev/null & echo $!";
$pid = shell_exec($command);
echo "If you see this message just after run script than it works properly";
echo $pid."\n";
从 CLI 我运行它:
php test.php
直到 mysql 从文件恢复数据库之前我看不到调试消息。
同时,我使用 SHOW processlist 管理 MySQL; 看来数据库的恢复正在工作。但为什么我无法获取进程的PID?
最佳答案
尝试使用exec()
函数explained here
将 $pid
更改为:
$pid = exec('nohup $cmd 2> /dev/null & echo $!');
echo $pid."\n";
尝试一下!
关于php - 从后台文件恢复MySQL数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22401630/