使用zlib函数之前,运行phpinfo()来确定php支持这个库
格式:
$fp - gzopen('filename.gz', 'w5');
gzwrite($fp, 'data');
gzclose($fp);
再打开一个文件时,使用这些字母来设置模式。对于gzopen,我们还可以设置压缩级别(1到9),并且可以利用f、h和b来进一步调整模式。
r 只读r+ 读和写
w 只写,从文件七点开始w+ 读和写,从文件起点开始
a 只写,从文件末尾开始a+ 读和写,从文件末尾开始
x x+
f 过滤的数据
h 只进行霍夫曼压缩
b 二进制模式
readgzfile() 读取压缩文件,对数据进行解压,返回得到的数据
gzfile() 读取压缩文件,对数据进行解压,以数组形式返回结果(每个元素对应于文件里的一行)
//phpinfo();
$db_name= 'test';
$dir = "backups/$db_name";
if(!is_dir($dir)){
if(!@mkdir($dir)){
die("
The backup directory--$dir--could not be created.
\n");}
}
$time = time();
$dbc = @mysqli_connect('localhost', 'root', '', $db_name)
OR die("
The database--$db_name--could not be backed up.
\n");$q = 'SHOW TABLES';
$r = mysqli_query($dbc, $q);
if(mysqli_num_rows($r) > 0){
echo "
Backing up database '$db_name'.
\n";while (list($table) = mysqli_fetch_array($r, MYSQLI_NUM)){
$q2 = "SELECT * FROM $table";
$r2 = mysqli_query($dbc, $q2);
if(mysqli_num_rows($r2) > 0){
if($fp = gzopen("$dir/{$table}_{$time}.sql.gz", 'w9')){
while ($row = mysqli_fetch_array($r2, MYSQLI_NUM)){
foreach ($row as $value){
gzwrite($fp, "'$value', ");
}
gzwrite($fp, "\n");
}
gzclose($fp);
echo "
Table '$table' backed up.
\n";} else {
echo "
the file--$dir/{$table}_{$time}.sql.gz--could not be opened for writing.
\n";break;
}
}
}
}else {
echo "
The submitted database--$db_name--contains no tables.
\n";}
?>
萨发速度