Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan tugas sandaran pangkalan data berjadual dalam PHP

Bagaimana untuk melaksanakan tugas sandaran pangkalan data berjadual dalam PHP

PHPz
PHPzasal
2023-05-19 08:21:05878semak imbas

Dengan perkembangan pesat Internet, data tapak web telah menjadi salah satu aset terpenting sesebuah perusahaan. Walau bagaimanapun, tidak kira apa jenis laman web itu, tidak dapat dielakkan kehilangan data akan berlaku. Oleh itu, sandaran pangkalan data menjadi sangat diperlukan. Artikel ini akan memperkenalkan kaedah tugas berjadual automatik untuk menulis sandaran pangkalan data menggunakan PHP, yang bukan sahaja dapat memastikan keselamatan data, tetapi juga mengurangkan beban kerja pentadbir.

1. Kepentingan membuat sandaran pangkalan data

Menyandarkan pangkalan data adalah sangat penting, dan ini adalah akal yang perlu diketahui oleh setiap pentadbir laman web. Sama ada ia disebabkan oleh kegagalan perkakasan, serangan penggodam atau kesilapan manusia, data mungkin hilang. Jika tiada sandaran, perusahaan akan menghadapi bencana besar.

Selain itu, faedah lain daripada membuat sandaran pangkalan data ialah ia boleh membantu syarikat menjalankan analisis data yang lebih baik. Sandaran biasanya menyimpan data secara berpusat pada cakera atau peranti storan lain, dan sandaran ini boleh digunakan pada bila-bila masa untuk analisis harian.

2. Gunakan PHP untuk melaksanakan sandaran pangkalan data

1 Sambung ke pangkalan data

Sebelum menggunakan PHP untuk membuat sandaran pangkalan data, kita perlu menyambung ke pangkalan data terlebih dahulu. Anda boleh menggunakan mysqli atau PDO untuk menyambung Andaikan kami menggunakan mysqli untuk menyambung ke pangkalan data:

$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if($mysqli->connect_errno)
{
    die("Failed to connect: " . $mysqli->connect_error);
}

Dalam kod, DB_HOST, DB_USER, DB_PASS dan DB_NAME mewakili nama hos, nama pengguna, kata laluan dan nama pangkalan data bagi pangkalan data masing-masing. Jika sambungan berjaya, objek mysqli akan dikembalikan untuk operasi seterusnya.

2. Dapatkan semua jadual dalam pangkalan data

Untuk membuat sandaran keseluruhan pangkalan data, kita perlu mendapatkan semua jadual terlebih dahulu. Ini boleh dicapai melalui kod berikut:

$tables = array();  
$result = $mysqli->query('SHOW TABLES');
while($row = $result->fetch_row())  
{  
     $tables[] = $row[0];  
}

Objek mysqli digunakan dalam kod untuk melaksanakan arahan SHOW TABLES untuk mendapatkan semua nama jadual.

3. Sandarkan struktur jadual dan data

Sangat penting untuk membuat sandaran struktur jadual dan data boleh digunakan dengan mudah semasa pemulihan data. Membuat sandaran data memastikan integriti data. Berikut ialah kod untuk menyandarkan struktur jadual dan data:

foreach($tables as $table)  
{  
    $result = $mysqli->query('SELECT * FROM '.$table);  
    $num_fields = $result->field_count;  
 
    $return .= 'DROP TABLE IF EXISTS '.$table.';';  
    $row2 = $mysqli->query('SHOW CREATE TABLE '.$table)->fetch_row();  
    $return .= "

".$row2[1].";

";  
 
    for($i = 0; $i < $num_fields; $i++)  
    {  
        while($row = $result->fetch_row())  
        {  
            $return .= 'INSERT INTO '.$table.' VALUES(';  
            for($j=0; $j<$num_fields; $j++)  
            {  
                $row[$j] = addslashes($row[$j]);  
                $row[$j] = str_replace("
","\n",$row[$j]);  
                if (isset($row[$j])) { $return .= '"'.$row[$j].'"' ; } else { $return .= '""'; }  
                if ($j<($num_fields-1)) { $return.= ','; }  
            }  
            $return .= ");
";  
        }  
    }  
    $return .= "


";  
}

Kod ini akan merentasi semua jadual dan melaksanakan SHOW CREATE TABLE untuk menjana definisi struktur jadual bagi setiap jadual. Seterusnya, anda akan menggunakan arahan INSERT INTO untuk memasukkan data dalam jadual ke dalam fail sandaran. Oleh kerana data datang dalam pelbagai format, ia perlu dilepaskan.

4. Tulis fail sandaran

Sekarang kami telah memperoleh semua jadual dan data, kami akan menulisnya ke fail sandaran. Berikut ialah kod untuk menulis data sandaran pada fail:

$backup_file = './backup/'.DB_NAME.'_'.date("Y-M-d").'_'.time().'.sql';  
$fh = fopen($backup_file, 'w');  
fwrite($fh, $return);  
fclose($fh);  

Buat fail sandaran dalam kod dan tulis kandungan sandaran pada fail. Fail sandaran dinamakan dengan nama pangkalan data, tarikh dan masa sandaran.

3. Pelaksanaan tugas berjadual

1 Gunakan Crontab

Menggunakan Crontab ialah cara biasa untuk melaksanakan tugas berjadual dan anda boleh mengkonfigurasi masa pelaksanaan dan kitaran pelaksanaan dengan mudah. daripada tugasan itu. Katakan kita perlu melakukan operasi sandaran pangkalan data pada 12 tengah malam setiap hari, anda boleh menggunakan arahan berikut untuk menambah tugas sandaran ke Crontab:

crontab -e

Kemudian tambah arahan berikut:

0 0 * * * /usr/bin/php /path/to/backup.php >> /path/to/backup.log

The arahan di atas akan menjalankan tugas sandaran pada tengah malam setiap hari Laksanakan skrip backup.php pada jam 12 dan tulis hasil larian pada fail backup.log.

2. Gunakan alatan pihak ketiga

Jika anda tidak mahu menggunakan Crontab, anda juga boleh cuba menggunakan alatan pihak ketiga untuk melaksanakan tugas yang dijadualkan. Contohnya, alatan seperti PHP Task Scheduler dan CronManager boleh digunakan untuk mengurus tugasan yang dijadualkan tanpa memerlukan sebarang perubahan konfigurasi pada pelayan.

4. Ringkasan

Menyandarkan data ialah bahagian penting dalam memastikan keselamatan aset korporat. Artikel ini memperkenalkan kaedah menggunakan PHP untuk menulis sandaran pangkalan data, yang boleh membantu pentadbir melakukan sandaran data secara automatik dan mengurangkan beban kerja mereka. Akhir sekali, tidak kira kaedah yang anda pilih, pastikan anda menyandarkan data anda tepat pada masanya untuk memastikan keselamatan data.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan tugas sandaran pangkalan data berjadual dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn