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行に対応)を配列形式で返す
<?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>
"; } ?>

サージ速度