$backup_path=&quot;./sqlbackup/&quot;;<br /> $action=$_GET[&quot;action&quot;];<br /> switch($action)<br /> {<br /> case &quot;backup_sql&quot;:<br /> backup_sql();<br /> break;<br /> case &quot;restore&quot;:<br /> restore();<br /> break;<br /> case &quot;down&quot;:<br /> down();<br /> break;<br /> case &quot;del&quot;:<br /> del();<br /> break;<br /> }<br /> <br /> &lt;?php<br /> $i=0;<br /> if ($handle = opendir($backup_path))<br /> {<br /> while (false !== ($file = readdir($handle)))//读取文件夹里的文件<br /> {<br /> if($file!=&quot;.&quot;&amp;&amp;$file!=&quot;..&quot;)<br /> {<br /> $file_array[$i][&quot;filename&quot;]=$file;<br /> $file_array[$i][&quot;filetime&quot;]=date(&quot;Y-m-d H:i:s&quot;,filemtime<br /> <br /> ($backup_path.$file));<br /> $file_array[$i][&quot;filesize&quot;]=ceil(filesize($backup_path.$file)/1024);<br /> $i++;<br /> }<br /> <br /> }<br /> closedir($handle);//关闭文件夹<br /> }<br /> ?&gt;<br /> <br /> date(PHP 3, PHP 4, PHP 5)<br /> date -- 格式化一个本地时间/日期<br /> 说明<br /> string date ( string format [, int timestamp] )<br /> date(&quot;Y-m-d&quot; 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 /> &lt;?php<br /> // 注意在 4.0.0-RC2 之前不存在 !== 运算符<br /> if ($handle = opendir(/path/to/files)) {<br /> echo &quot;Directory handle: $handle\n&quot;;<br /> echo &quot;Files:\n&quot;;<br /> /* 这是正确地遍历目录方法 */<br /> while (false !== ($file = readdir($handle))) {<br /> echo &quot;$file\n&quot;;<br /> }<br /> /* 这是错误地遍历目录的方法 */<br /> while ($file = readdir($handle)) {<br /> echo &quot;$file\n&quot;;<br /> }<br /> closedir($handle);<br /> }<br /> ?&gt; <br /> <br /> <br /> if($file_array){<br /> foreach($file_array as $key=&gt;$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 /> &lt;?php<br /> /**<br /> * @name GetSql<br /> * @param string , 表名<br /> * @return string , SQl语句<br /> */<br /> function GetSql($table){<br /> $sql = ;<br /> $sql.= &quot;\r\n\r\n&quot;.--导出表 .$table. 的结构:.&quot;\r\n\r\n&quot;;<br /> $sql.= DROP TABLE IF EXISTS .$table.&quot;;\r\n\r\n&quot;;<br /> $result = mysql_query(show create table .$table);<br /> $row =@mysql_fetch_array($result);<br /> $sql.= $row[1].&quot;;\r\n\r\n&quot;;<br /> $result=mysql_query(select * from .$table);<br /> $sql.=&quot;--导出表 $table 中的数据:\r\n\r\n&quot;;<br /> if(mysql_num_rows($result)==0)<br /> $sql.=--表.$table.中无数据;<br /> else{<br /> $sql.= INSERT INTO .$table;<br /> $c = 1;<br /> $titsql = (;<br /> $contentsql =&quot; VALUES\r\n(&quot;;<br /> while ($row = mysql_fetch_assoc($result)){<br /> while ($elecment = each($row)){<br /> if($c==1)<br /> $titsql.=$elecment[key].,;<br /> $contentsql.=&quot;&quot;.addslashes($elecment[value]).&quot;,&quot;;<br /> }<br /> $contentsql = substr($contentsql,0,-1).),.&quot;\r\n(&quot;;<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=&quot;backup.sql&quot;);<br /> //header(&quot;Content-Transfer-Encoding: binary\n&quot;);<br /> $result = mysql_query(&quot;show tables&quot;);<br /> while ($row = mysql_fetch_array($result)){<br /> $content.= GetSql($row[0]).&quot;\r\n&quot;;<br /> }<br /> $filename=date(YmdHis).&quot;.sql&quot;;<br /> $fp=@fopen(&quot;sqlbackup/&quot;.$filename,&quot;w&quot;) or die(&quot;写方式打开文件失败,请检查程序目录是否为可<br /> <br /> 写&quot;);//配置conn.php文件<br /> @fputs($fp,$content) or die(&quot;文件写入失败,请检查程序目录是否为可写&quot;); <br /> @fclose($fp);<br /> }<br /> function del()<br /> {<br /> global $backup_path;<br /> $filename=$_GET[&quot;filename&quot;];<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[&quot;filename&quot;];<br /> $fullpath=$backup_path.$filename;<br /> $fp = fopen($fullpath, &quot;r&quot;) or die(&quot;不能打开SQL文件 $fullpath&quot;);//打开文件<br /> <br /> while($SQL=GetNextSQL())<br /> {<br /> if (mysql_query($SQL)){<br /> //echo &quot;执行SQL:&quot;.mysql_error().&quot;&quot;;<br /> // echo &quot;SQL语句为:&quot;.$SQL.&quot;&lt;BR&gt;&quot;;<br /> }<br /> }<br /> echo $fullpath.&quot;导入完成&quot;; <br /> fclose($fp) or die(&quot;Cant close file $fullpath&quot;);//关闭文件<br /> mysql_close();<br /> <br /> }<br /> function GetNextSQL() {<br /> global $fp;<br /> $sql=&quot;&quot;;<br /> while ($line = @fgets($fp, 40960)) {<br /> $line = trim($line);<br /> //以下三句在高版本php中不需要<br /> $line = str_replace(&quot;\\\\&quot;,&quot;\\&quot;,$line);<br /> $line = str_replace(&quot;\&quot;,&quot;&quot;,$line);<br /> $line = str_replace(&quot;\\r\\n&quot;,chr(13).chr(10),$line);<br /> // $line = stripcslashes($line);<br /> if (strlen($line)&gt;1) {<br /> if ($line[0]==&quot;-&quot; &amp;&amp; $line[1]==&quot;-&quot;) {<br /> continue;<br /> }<br /> }<br /> $sql.=$line.chr(13).chr(10);<br /> if (strlen($line)&gt;0){<br /> if ($line[strlen($line)-1]==&quot;;&quot;){<br /> break;<br /> }}<br /> }<br /> return $sql;<br /> }<br /> function down()<br /> {<br /> global $backup_path;<br /> $filename=$_GET[&quot;filename&quot;];<br /> file_down($backup_path.$filename);<br /> }<br /> ?&gt;<br /> <br /> <br />
T:0.006625s,M:252.01 KB
返回顶部 留言