phpはデータベース内のテーブルをカンマで分割された圧縮テキストファイルに1つずつバックアップする
1887 ワード
zlib関数を使用する前にphpinfo()を実行して、phpがこのライブラリフォーマットをサポートしていることを決定します:$fp-gzopen('filename.gz','w 5');gzwrite($fp, 'data'); gzclose($fp);
もう1つのファイルを開くときは、これらのアルファベットを使用してモードを設定します.gzopenの場合、圧縮レベル(1〜9)を設定することもでき、f、h、bを用いてモードをさらに調整することもできる.r読み取り専用r+読み取りと書き込みw書きのみ、ファイル7時からw+読み取りと書き込み、ファイル起点からa書きのみ、ファイル末尾からa+読み取りと書き込み、ファイル末尾からx+fフィルタのデータhはホフマン圧縮bバイナリモードのみ
readgzfile()圧縮ファイルを読み出し、データを解凍し、得られたデータgzfile()を返して圧縮ファイルを読み出し、データを解凍し、結果(各要素はファイル内の1行に対応)を配列形式で返す
サージ速度
もう1つのファイルを開くときは、これらのアルファベットを使用してモードを設定します.gzopenの場合、圧縮レベル(1〜9)を設定することもでき、f、h、bを用いてモードをさらに調整することもできる.r読み取り専用r+読み取りと書き込みw書きのみ、ファイル7時からw+読み取りと書き込み、ファイル起点からa書きのみ、ファイル末尾からa+読み取りと書き込み、ファイル末尾からx+fフィルタのデータhはホフマン圧縮bバイナリモードのみ
readgzfile()圧縮ファイルを読み出し、データを解凍し、得られたデータgzfile()を返して圧縮ファイルを読み出し、データを解凍し、結果(各要素はファイル内の1行に対応)を配列形式で返す
<?php
//phpinfo();
$db_name= 'test';
$dir = "backups/$db_name";
if(!is_dir($dir)){
if(!@mkdir($dir)){
die("<p>The backup directory--$dir--could not be created.</p>
");
}
}
$time = time();
$dbc = @mysqli_connect('localhost', 'root', '', $db_name)
OR die("<p>The database--$db_name--could not be backed up.</p>
");
$q = 'SHOW TABLES';
$r = mysqli_query($dbc, $q);
if(mysqli_num_rows($r) > 0){
echo "<p>Backing up database '$db_name'.</p>
";
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, "
");
}
gzclose($fp);
echo "<p>Table '$table' backed up.</p>
";
} else {
echo "<p>the file--$dir/{$table}_{$time}.sql.gz--could not be opened for writing.</p>
";
break;
}
}
}
}else {
echo "<p>The submitted database--$db_name--contains no tables.</p>
";
}
?>
サージ速度