$backup_path="./sqlbackup/";<br />
$action=$_GET["action"];<br />
switch($action)<br />
{<br />
case "backup_sql":<br />
backup_sql();<br />
break;<br />
case "restore":<br />
restore();<br />
break;<br />
case "down":<br />
down();<br />
break;<br />
case "del":<br />
del();<br />
break;<br />
}<br />
<br />
<?php<br />
$i=0;<br />
if ($handle = opendir($backup_path))<br />
{<br />
while (false !== ($file = readdir($handle)))//读取文件夹里的文件<br />
{<br />
if($file!="."&&$file!="..")<br />
{<br />
$file_array[$i]["filename"]=$file;<br />
$file_array[$i]["filetime"]=date("Y-m-d H:i:s",filemtime<br />
<br />
($backup_path.$file));<br />
$file_array[$i]["filesize"]=ceil(filesize($backup_path.$file)/1024);<br />
$i++;<br />
}<br />
<br />
}<br />
closedir($handle);//关闭文件夹<br />
}<br />
?><br />
<br />
date(PHP 3, PHP 4, PHP 5)<br />
date -- 格式化一个本地时间/日期<br />
说明<br />
string date ( string format [, int timestamp] )<br />
date("Y-m-d" h:i:s,now());<br />
<br />
filemtime(PHP 3, PHP 4, PHP 5)<br />
filemtime -- 取得文件修改时间<br />
说明<br />
int filemtime ( string filename )<br />
<br />
ceil(PHP 3, PHP 4, PHP 5)<br />
ceil -- 进一法取整<br />
<br />
filesize(PHP 3, PHP 4, PHP 5)<br />
filesize -- 取得文件大小<br />
<br />
opendir<br />
<br />
(PHP 3, PHP 4, PHP 5)<br />
opendir -- 打开目录句柄<br />
说明<br />
resource opendir ( string path [, resource context] )<br />
打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中。 <br />
<br />
readdir<br />
(PHP 3, PHP 4, PHP 5)<br />
readdir -- 从目录句柄中读取条目<br />
说明<br />
string readdir ( resource dir_handle )<br />
返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回。<br />
<?php<br />
// 注意在 4.0.0-RC2 之前不存在 !== 运算符<br />
if ($handle = opendir(/path/to/files)) {<br />
echo "Directory handle: $handle\n";<br />
echo "Files:\n";<br />
/* 这是正确地遍历目录方法 */<br />
while (false !== ($file = readdir($handle))) {<br />
echo "$file\n";<br />
}<br />
/* 这是错误地遍历目录的方法 */<br />
while ($file = readdir($handle)) {<br />
echo "$file\n";<br />
}<br />
closedir($handle);<br />
}<br />
?> <br />
<br />
<br />
if($file_array){<br />
foreach($file_array as $key=>$rs)<br />
{<br />
array_multisort($file_array, SORT_DESC);<br />
array_multisort<br />
(PHP 4, PHP 5)<br />
array_multisort -- 对多个数组或多维数组进行排序<br />
说明<br />
bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]] )<br />
如果成功则返回 TRUE,失败则返回 FALSE。 <br />
<br />
好多代码,有时间来看一下<br />
<?php<br />
/**<br />
* @name GetSql<br />
* @param string , 表名<br />
* @return string , SQl语句<br />
*/<br />
function GetSql($table){<br />
$sql = ;<br />
$sql.= "\r\n\r\n".--导出表 .$table. 的结构:."\r\n\r\n";<br />
$sql.= DROP TABLE IF EXISTS .$table.";\r\n\r\n";<br />
$result = mysql_query(show create table .$table);<br />
$row =@mysql_fetch_array($result);<br />
$sql.= $row[1].";\r\n\r\n";<br />
$result=mysql_query(select * from .$table);<br />
$sql.="--导出表 $table 中的数据:\r\n\r\n";<br />
if(mysql_num_rows($result)==0)<br />
$sql.=--表.$table.中无数据;<br />
else{<br />
$sql.= INSERT INTO .$table;<br />
$c = 1;<br />
$titsql = (;<br />
$contentsql =" VALUES\r\n(";<br />
while ($row = mysql_fetch_assoc($result)){<br />
while ($elecment = each($row)){<br />
if($c==1)<br />
$titsql.=$elecment[key].,;<br />
$contentsql.="".addslashes($elecment[value]).",";<br />
}<br />
$contentsql = substr($contentsql,0,-1).),."\r\n(";<br />
$c++;<br />
}<br />
$titsql =substr($titsql,0,-1).);<br />
$contentsql = substr($contentsql,0,-4).;;<br />
$sql.=$titsql;<br />
$sql.=$contentsql;<br />
}<br />
return $sql;<br />
}<br />
function backup_sql()<br />
{<br />
/**<br />
* @example 如下:导出某个数据库中的所有表<br />
*/<br />
//header(Content-Disposition: attachment; filename="backup.sql");<br />
//header("Content-Transfer-Encoding: binary\n");<br />
$result = mysql_query("show tables");<br />
while ($row = mysql_fetch_array($result)){<br />
$content.= GetSql($row[0])."\r\n";<br />
}<br />
$filename=date(YmdHis).".sql";<br />
$fp=@fopen("sqlbackup/".$filename,"w") or die("写方式打开文件失败,请检查程序目录是否为可<br />
<br />
写");//配置conn.php文件<br />
@fputs($fp,$content) or die("文件写入失败,请检查程序目录是否为可写"); <br />
@fclose($fp);<br />
}<br />
function del()<br />
{<br />
global $backup_path;<br />
$filename=$_GET["filename"];<br />
unlink($backup_path.$filename);<br />
}<br />
function restore()<br />
{<br />
global $db,$backup_path,$fp;<br />
set_time_limit(0); //设置超时时间为0,表示一直执行。当php在safe mode模式下无效,此时可能<br />
<br />
会导致导入超时,此时需要分段导入<br />
$filename=$_GET["filename"];<br />
$fullpath=$backup_path.$filename;<br />
$fp = fopen($fullpath, "r") or die("不能打开SQL文件 $fullpath");//打开文件<br />
<br />
while($SQL=GetNextSQL())<br />
{<br />
if (mysql_query($SQL)){<br />
//echo "执行SQL:".mysql_error()."";<br />
// echo "SQL语句为:".$SQL."<BR>";<br />
}<br />
}<br />
echo $fullpath."导入完成"; <br />
fclose($fp) or die("Cant close file $fullpath");//关闭文件<br />
mysql_close();<br />
<br />
}<br />
function GetNextSQL() {<br />
global $fp;<br />
$sql="";<br />
while ($line = @fgets($fp, 40960)) {<br />
$line = trim($line);<br />
//以下三句在高版本php中不需要<br />
$line = str_replace("\\\\","\\",$line);<br />
$line = str_replace("\","",$line);<br />
$line = str_replace("\\r\\n",chr(13).chr(10),$line);<br />
// $line = stripcslashes($line);<br />
if (strlen($line)>1) {<br />
if ($line[0]=="-" && $line[1]=="-") {<br />
continue;<br />
}<br />
}<br />
$sql.=$line.chr(13).chr(10);<br />
if (strlen($line)>0){<br />
if ($line[strlen($line)-1]==";"){<br />
break;<br />
}}<br />
}<br />
return $sql;<br />
}<br />
function down()<br />
{<br />
global $backup_path;<br />
$filename=$_GET["filename"];<br />
file_down($backup_path.$filename);<br />
}<br />
?><br />
<br />
<br />