加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

在纯PHP5中创建MySQL转储

发布时间:2020-12-13 22:44:02 所属栏目:PHP教程 来源:网络整理
导读:我正在为我的项目创建一个备份脚本,该脚本将通过cron执行. 现在我正在使用: ?phpinclude("config.php");/* Misc */$pathtobackup = realpath('.');$backupfolder = realpath("backup");$sqlfilename = "SQLDUMP-".date("d-m-Y--H-i").".sql";$backupfilenam
我正在为我的项目创建一个备份脚本,该脚本将通过cron执行.

现在我正在使用:

<?php
include("config.php");

/* Misc */
$pathtobackup = realpath('.');
$backupfolder = realpath("backup");
$sqlfilename = "SQLDUMP-".date("d-m-Y--H-i").".sql";
$backupfilename = "BACKUP-".date("d-m-Y--H-i").".zip";
$backupfilepath = $backupfolder."/".$backupfilename;

/* Systemcall */
exec("/usr/bin/mysqldump -u{$mysqluser} -p{$mysqlpw} -h {$mysqlserver} {$mysqldb}",$sqldata,$fp);

$sqldump = implode("n",$sqldata);

if ($fp!=0){
    die("could not create mysql dumpn");
}

/* Create Zip */
$zip = new ZipArchive();

if ($zip->open($backupfilepath,ZIPARCHIVE::CREATE)!==TRUE) {
    die("cannot open <{$backupfilepath}>n");
}


$path = realpath('.');

$iterator  = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathtobackup,FilesystemIterator::SKIP_DOTS));

foreach($iterator as $name=>$object){

    $zip->addFile($name);

}

$zip->addFromString($sqlfilename,$sqldump);

if ($zip->close()!==TRUE) {
    die("cannot write <{$backupfilepath}>n");
}

?>

但是我想用纯PHP创建MySQL Dump以使其更兼容并且能够在其他服务器上使用它,在那里无法使用系统和mysqldump.

我希望你知道一个使用150文件库的解决方案:)

问候,
弗雷德里克

解决方法

如果你真的必须这样做,那么在创建这样的脚本时你应该考虑几个mysql查询:

SHOW TABLES – 返回所有数据库表名

SHOW CREATE TABLE table_name返回用于创建表的sql查询

SHOW PROCEDURE STATUS和SHOW FUNCTION STATUS – 返回存储过程和函数列表

SHOW CREATE PROCEDURE procedure_name和SHOW CREATE FUNCTION function_name -return用于创建存储过程和函数的查询

其余的通常是SELECT和INSERT查询.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读