php - 从后台文件恢复MySQL数据库

标签 php mysql database nohup command-line-interface

我知道这个话题已经讨论了很多时间。但我需要帮助。 我的目标是从后台文件恢复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/

相关文章:

javascript - php中有替换功能吗?就像 JavaScript 的 Replace()

mysql - Offset是否应该在Sql查询的末尾指定?

php - 拉拉维尔 : Route not found error

java - 如何重新创建数据库并从之前的自动导出中导入 JIRA 数据

ruby-on-rails - Ruby on Rails 未定义的 simple_form_for 方法

php - Laravel 在 Controller 中手动检查 CSRF

php - 如何从 mysql 数据库中检索句子中用逗号分隔的所有值?

PHP,str_pad unicode 问题

mysql - 从表中选择列值不等于 'myvalue' 的列

html - Laravel 如何将 HTML 保存到数据库然后检索它