php 中执行外部程序需,PHP-执行外部程序

备份/恢复数据库

exec — 执行一个外部程序(在php文件所在目录进行执行)

很久以前写的,很多方法是项目中的直接复制粘体用不了,只能提供下思路。

用到执行外部程序的就这一句:

exec("mysql -u$username -p$password $database < $backup_path$backup_name");

defined(‘BASEPATH‘) OR exit(‘No direct script access allowed‘);

class Database extends MY_Controller {

private $backup_path;

public function __construct(){

parent::__construct();

$this->backup_path = dirname($_SERVER[‘SCRIPT_FILENAME‘]).DIRECTORY_SEPARATOR.‘db_backup‘.DIRECTORY_SEPARATOR;

}

public function index(){

$this->loadViewhf(‘back/database.html‘);

}

public function list_backup(){

//打开文件夹

$dir_handle = opendir($this->backup_path);

//读取文件夹

$backup_names = array();

while(false !== $file = readdir($dir_handle)){

if ($file == ‘.‘ || $file == ‘..‘) continue;

// 创建每一行数据

$table_row_map = (object)array(

‘backup_name‘ => $file,

‘backup_path‘ => ‘~/db_backup‘

);

// 加入每一行数据到data

$result[‘data‘][] = $table_row_map;

}

//返回结果

$this->returnResult($result);

}

public function backup(){

// 选择备份路径(网站根目录下的db_backup文件夹)

$backup_path = $this->backup_path;

// 生成备份文件名

$backup_name = date("Y-m-d_H-i-s").‘_backup.sql‘;;

// 进行备份

$username = $this->db->username;

$password = $this->db->password;

$database = $this->db->database;

exec("mysqldump -u$username -p$password $database > $backup_path$backup_name");

// 返回结果

$result[‘status‘] = true;

$this->returnResult($result);

}

public function del_backup(){

// 备份文件名

$backup_name = $this->input->post(‘backup_name‘, true);

// 选择备份路径(网站根目录下的db_backup文件夹)

$backup_path = $this->backup_path;

// 删除

if (unlink($backup_path.$backup_name)) {

$result[‘status‘] = true;

}else{

$result[‘status‘] = false;

}

// 返回结果

$this->returnResult($result);

}

public function recover_backup(){

// 备份文件名

$backup_name = $this->input->post(‘backup_name‘, true);

// 选择备份路径(网站根目录下的db_backup文件夹)

$backup_path = $this->backup_path;

// 恢复备份

$username = $this->db->username;

$password = $this->db->password;

$database = $this->db->database;

exec("mysql -u$username -p$password $database < $backup_path$backup_name");

// 返回结果

$result[‘status‘] = true;

$this->returnResult($result);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值