PHP-执行外部程序

备份/恢复数据库

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

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

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

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

<?php
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);
    }

}

原文地址:https://www.cnblogs.com/jffun-blog/p/10212037.html

时间: 2024-10-16 10:54:14

PHP-执行外部程序的相关文章

C#小白使用入门,数据库操作,web端文件下载,执行外部程序,操作ini文件

现况:现有程序被排在服务器的每日执行任务计划中,程序功能是下载web端的一个文件,然后塞入到数据库中. 问题:不知道什么原因,偶尔发现服务器任务执行失败情况,导致某一天的数据缺失. 需求:每隔三天检查一次数据是否存在,如果不存在,则指定日期重新下载一次. 第一步:写一个操作数据库的类 namespace DEMO2616{ public class OracleDBlink {string connStr = "User Id=LIRUPENG;Password=Lrp19961013..;Da

使用 NAnt 执行外部程序

NAnt 是一个可以帮助我们做自动建构的工具,透过NAnt不但可以自动建构,也可以做很多其他如复制文件,整理文件或建构多个版本等功能.基本上 NAnt 就是打内的 Ant. NAnt 的 Script 是XML,内容是由许多的 Target 组成,如果没有特别指定,默认是会去调用 Build 这个Target. 下面是 NAnt 的范例: 这个范例是使用 MSBuild.exe 去建构 TestApp 这个 solution. 一开始先声明几个变量供后面使用,分别是 _SLNPATH, _SLN

Java执行外部程序(Apache Commons Exec)

之前使用Runtime.getRuntime().exec调用外部程序,在Tomcat下会有当前线程一直等待的现象.当时为了解决这个问题,使用新建线程接收外部程序的输出信息,详情请看博客http://blog.csdn.net/accountwcx/article/details/46785437. 后来在网上找到开源的Java调用外部程序类库Apache Commons Exce,这个类库提供非阻塞方法调用外部程序. 官方网址 http://commons.apache.org/proper/

C#和asp.net执行外部EXE程序

这两天研究下.Net的执行外部EXE程序问题,就是在一个程序里通过按钮或其他操作运行起来另外一个程序,需要传入参数,如用户名.密码之类(实际上很类似单点登录,不过要简单的多的多):总结如下: 1.CS版:WebForm的调用外部程序,很简单 (1)如果不考虑参数问题,仅仅是执行另外一个程序,用:System.Diagnostics.Process.Start("')即可: 如:System.Diagnostics.Process.Start("D:\\首字母拼音码.exe",

delphi中等待外部应用程序执行完成后,再继续执行自有代码段

下面是两个函数,用来执行一个外部程序,缺省是异步执行 同步调用方法 RunProgram('c:\aa.exe',true); 参考IsProgram_Runing函数,你也可以调用RunProgram('c:\aa.exe')先异步执行,然后根据返回的进程句柄,自己判断程序是否执行结束. // 异步执行 function RunProgram(ProgramName:string;Wait:Boolean=False):Cardinal; var StartInfo:STARTUPINFO;

PHP执行系统命令的有几个常用的函数

PHP执行系统命令的有几个常用的函数,如有:system函数.exec函数.popen函数,passthru,shell_exec函数他们都可以执行系统命令,不过前提时必须系统给了权限了哦. system函数 说明:执行外部程序并显示输出资料. 语法:string system(string command, int [return_var]); 返回值: 字符串 详细介绍:本函数就像是 C 语中的函数 system(),用来执行指令,并输出结果,若是 return_var 参数存在,则执行 c

PHP执行linux系统命令

本文是第一篇,讲述如何在PHP中执行系统命令从而实现一些特殊的目的,比如监控服务器负载,重启MySQL.更新SVN.重启Apache等.第二篇<PHP监控linux服务器负载>:http://www.ccvita.com/390.html 首先先要给大家介绍PHP执行linux系统命令的几个基本函数.我曾经很长一段时间都分不清下面几个函数的具体用法区别. system函数说明:执行外部程序并显示输出资料.语法:string system(string command, int [return_

进程控制扩展 程序执行 程序执行 函数

<?php //Resource Limits 名字 默认 可修改范围 更新日志 //memory_limit "128M" PHP_INI_ALL "8M" before PHP 5.2.0, "16M" in PHP 5.2.0 //echo memory_get_peak_usage();//返回分配给 PHP 内存的峰值 //echo "<br>"; //echo memory_get_usage()

go执行外部应用

go执行外部应用 最近想将原来用asp.net mvc写的一个公司内部网站改用beego来写,但发现其中有一个功能是,能将加密的sqlite文件进行解密,因为这个解密是不能公开的,但有些同事需要查看这些sqlite文件的结构和数据 ,所以其中一个功能就是能够将上传上来的sqlite解密后,再返回给浏览器供下载下来查看,但是发现go中没有提供sqlite的解密包功能,故另寻它路,发现可以采用go来执行我写的解密命令行程序,将需要解密的工程当参数传进去,然后执行后,就是解密后的文件了,可以返回给浏览