


Cara menggunakan ThinkPHP6 untuk melaksanakan sandaran dan pemulihan pangkalan data
Dalam proses membangunkan sistem perniagaan, pangkalan data adalah bahagian yang sangat penting. Oleh itu, membuat sandaran dan memulihkan pangkalan data adalah operasi yang sangat diperlukan. Artikel ini akan menggabungkan contoh rangka kerja ThinkPHP6 untuk memperkenalkan cara menggunakan ThinkPHP6 untuk melaksanakan sandaran dan pemulihan pangkalan data.
1. Sandaran pangkalan data
1.1 Penyediaan persekitaran
Sebelum melakukan sandaran pangkalan data, anda perlu mengesahkan perkara berikut:
1 untuk menyediakan alamat direktori bin, dan menambah laluannya ke pembolehubah Laluan sistem; pada mesin di mana pangkalan data berada. Pengguna mempunyai kuasa untuk melaksanakan perintah mysqldump pada pangkalan data.
1.2 Pelaksanaan sandaran pangkalan data
1.2.1 Konfigurasikan parameter sandaran
Buat fail pangkalan data.php dalam folder konfigurasi, tetapkan maklumat sambungan pangkalan data dan parameter yang diperlukan untuk sandaran.
<?php return [ // 数据库类型 'type' => 'mysql', // 数据库连接DSN配置 'dsn' => '', // 服务器地址 'hostname' => 'localhost', // 数据库名 'database' => 'test', // 数据库用户名 'username' => 'root', // 数据库密码 'password' => 'root', // 数据库连接端口 'hostport' => '3306', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => 'think_', // 数据库调试模式 'debug' => false, // 数据库备份路径,没有则自动创建 'path' => '', // 数据库备份卷大小,单位为字节,设为0表示不限制备份大小 'part' => 20971520, // 数据库备份文件压缩格式,这里是gzip 'compress' => 'gzip', // 数据库备份文件名 'filename' => '', // 数据库备份文件是否需要压缩 'zip' => true, // 数据库备份文件是否需要分卷备份 'split' => true, // 数据库备份时是否将存储过程和触发器一起备份 'level' => 9, // 数据库备份文件的存储路径,最好为绝对路径,这也是最关键的路径 'path' => '/data/mysql/', ];
1.2.2 Menulis kod sandaran
Buat fail BackupController.php di bawah apl/pengawal dan tambah kod berikut.
<?php declare(strict_types=1); namespace appcontroller; use thinkacadeDb; class BackupController { protected $backupConfig; public function __construct() { $this->backupConfig = config('database'); } public function backup() { // 防止备份数据过程超时 set_time_limit(0); $database = $this->backupConfig['database']; $filename = date('Ymd-His', time()) . ".sql"; $path = $this->backupConfig['path'].$filename; // 检查目录是否存在或者是否有权限写入 if(!is_dir($this->backupConfig['path'])){ mkdir($this->backupConfig['path'], 0755, true); }else{ if(!is_writeable($this->backupConfig['path'])){ chmod($this->backupConfig['path'], 0755); } } // 备份所有数据表 $result = Db::query("SHOW TABLES"); $tables = array(); foreach($result as $index => $row){ $tables[] = $row['Tables_in_'.$database]; } // 备份所有表结构和表数据 $content = ''; foreach($tables as $table){ $content = $content . "/*" . PHP_EOL; $content = $content . "表名:" . $table . PHP_EOL; $content = $content . "表结构:" . PHP_EOL; $content = $content . "*/" . PHP_EOL; $content = $content . $this->backupTableSchema($table); $content = $content . "/*" . PHP_EOL; $content = $content . "表数据:" . PHP_EOL; $content = $content . "*/" . PHP_EOL; $content = $content . $this->buildInsertSql($table); } // 是否需要压缩 if ($this->backupConfig['zip']) { $zip = new ZipArchive(); $zipfilename = $this->backupConfig['path'] . date('Ymd-His', time()) . ".zip"; if ($zip->open($zipfilename, ZipArchive::OVERWRITE) === TRUE) { $zip->addFile($path,$filename); $zip->close(); // 删除非压缩的文件 unlink($path); } else { // 备份失败 } } } // 备份表结构 protected function backupTableSchema($table) { $database = $this->backupConfig['database']; $result = Db::query("SHOW CREATE TABLE `" . $table . "`"); $create = $result[0]['Create Table'] . ";" . PHP_EOL.PHP_EOL; return $create; } // 备份表数据 protected function buildInsertSql($table) { $database = $this->backupConfig['database']; $result = Db::query("SELECT * FROM `" . $table . "`"); $insert = ''; foreach ($result as $key => $value) { $keys = array_keys($value); $values = array_map(array(Db::class, 'quote'), array_values($value)); $values = join(",", $values); $insert .= "INSERT INTO `" . $table . "` (`" . join("`,`", $keys) . "`) VALUES (" . $values . ");" . PHP_EOL; } $insert .= PHP_EOL; return $insert; } }
1.2.3 Lakukan sandaran
Masukkan alamat url berikut dalam penyemak imbas untuk melakukan sandaran:
http://localhost/backup/backup
1.3 Pemulihan pangkalan data
1.3.1 Tulis kod pemulihan
Buat fail RecoveryController.php di bawah apl/pengawal dan tambah kod berikut.
<?php declare(strict_types=1); namespace appcontroller; use thinkacadeDb; class RecoveryController { protected $backupConfig; public function __construct() { $this->backupConfig = config('database'); } public function recovery() { // 防止还原数据过程超时 set_time_limit(0); ini_set('memory_limit', '1024M'); $filename = input('get.filename'); // 读取备份文件 if ($this->backupConfig['zip']) { $zip = new ZipArchive(); if ($zip->open($this->backupConfig['path'].$filename) === true) { $filename = $zip->getNameIndex(0); $zip->extractTo($this->backupConfig['path']); $zip->close(); } } $content = file_get_contents($this->backupConfig['path'] . $filename); // 使用";"分割内容 $statements = explode(";", $content); // 开始事务 Db::startTrans(); foreach ($statements as $index => $stmt) { if (trim($stmt) === '') { continue; } $results = Db::query($stmt); if ($results === false) { Db::rollback(); return false; } } // 提交事务 Db::commit(); // 删除非压缩的文件 unlink($this->backupConfig['path'] . $filename); return true; } }
1.3.2 Lakukan pemulihan
Masukkan alamat url berikut dalam penyemak imbas untuk melakukan pemulihan:
http://localhost/recovery/recovery?filename=20200101-121212.sql.zip
Di atas adalah kaedah pelaksanaan sandaran pangkalan data dan pemulihan dalam ThinkPHP6 . Pembaca boleh menggunakan kod tersebut pada projek mereka sendiri dan menggunakan teknik secara fleksibel untuk menjadikan perniagaan kami lebih teguh dan boleh dipercayai.
Atas ialah kandungan terperinci Cara menggunakan ThinkPHP6 untuk melaksanakan sandaran dan pemulihan pangkalan data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Buka WeChat, pilih Tetapan dalam Saya, pilih Umum dan kemudian pilih Ruang Storan, pilih Pengurusan dalam Ruang Storan, pilih perbualan di mana anda ingin memulihkan fail dan pilih ikon tanda seru. Tutorial Model Berkenaan: iPhone13 Sistem: iOS15.3 Versi: WeChat 8.0.24 Analisis 1 Mula-mula buka WeChat dan klik pilihan Tetapan pada halaman Saya. 2 Kemudian cari dan klik Pilihan Umum pada halaman tetapan. 3Kemudian klik Ruang Storan pada halaman umum. 4 Seterusnya, klik Urus pada halaman ruang storan. 5Akhir sekali, pilih perbualan di mana anda ingin memulihkan fail dan klik ikon tanda seru di sebelah kanan. Tambahan: Fail WeChat biasanya tamat tempoh dalam beberapa hari Jika fail yang diterima oleh WeChat belum diklik, sistem WeChat akan mengosongkannya selepas 72 jam Jika fail WeChat telah dilihat.

Penyemakan imbas peribadi ialah cara yang sangat mudah untuk menyemak imbas dan melindungi privasi anda semasa melayari Internet pada komputer atau peranti mudah alih anda. Mod penyemakan imbas peribadi biasanya menghalang penyemak imbas daripada merekodkan sejarah lawatan anda, menyimpan kuki dan fail cache serta menghalang tapak web yang anda semak imbas daripada meninggalkan sebarang kesan dalam penyemak imbas. Walau bagaimanapun, untuk beberapa kes khas, kami mungkin perlu memulihkan sejarah penyemakan imbas Penyemakan Imbas Inkognito. Pertama sekali, kita perlu menjelaskannya: tujuan mod penyemakan imbas peribadi adalah untuk melindungi privasi dan menghalang orang lain daripada mendapatkan sejarah dalam talian pengguna daripada penyemak imbas. Oleh itu, penyemakan imbas inkognito

Di Douyin, platform video pendek yang penuh dengan kreativiti dan kecergasan, kami bukan sahaja dapat menikmati pelbagai kandungan yang menarik, tetapi juga mempunyai komunikasi yang mendalam dengan rakan-rakan yang berfikiran sama. Antaranya, percikan sembang adalah penunjuk penting keamatan interaksi antara kedua-dua pihak, dan mereka sering secara tidak sengaja mencetuskan ikatan emosi antara kita dan rakan-rakan kita. Walau bagaimanapun, kadangkala disebabkan beberapa sebab, percikan sembang mungkin terputus, jadi apakah yang perlu kami lakukan jika kami ingin memulihkan percikan sembang ini akan membawakan anda pengenalan terperinci tentang strategi kandungan, dengan harapan dapat membantu semua orang. Bagaimana untuk memulihkan cetusan sembang Douyin? 1. Buka halaman mesej Douyin dan pilih rakan untuk bersembang. 2. Hantar mesej dan sembang antara satu sama lain. 3. Jika anda menghantar mesej secara berterusan selama 3 hari, anda boleh mendapatkan logo percikan. Selama 3 hari, hantar gambar atau video antara satu sama lain

Bagaimana untuk memulihkan Album Foto Awan Xiaomi ke setempat? APP Album Foto Awan Xiaomi boleh dipulihkan ke setempat, tetapi kebanyakan rakan tidak tahu cara memulihkan Album Foto Awan Xiaomi ke setempat. Tutorial grafik kaedah tempatan, pengguna yang berminat datang dan lihat! Bagaimana untuk memulihkan album foto awan Xiaomi ke tempatan 1. Mula-mula buka fungsi tetapan dalam telefon Xiaomi dan pilih [Avatar Peribadi] pada antara muka utama 2. Kemudian masukkan antara muka akaun Xiaomi dan klik fungsi [Cloud Service]; lompat ke Xiaomi Untuk fungsi perkhidmatan awan, pilih [Cloud Backup];

Untuk menjalankan projek ThinkPHP, anda perlu: memasang Komposer untuk mencipta projek, masukkan direktori projek dan laksanakan php bin/console serve;

Kemas Kini Windows 10 Mei 2019 menampilkan latar belakang desktop lalai baharu yang lebih terang. Ia kelihatan hebat - dengan tema cahaya baharu. Jika anda menggunakan tema gelap Windows 10, anda mungkin mahukan latar belakang yang lebih gelap. Anehnya, latar belakang desktop Windows 10 asal telah dialih keluar daripada versi terkini Windows 10. Anda perlu memuat turunnya daripada web atau menyalin failnya daripada PC Windows 10 lama. Walaupun kami tidak dapat mencari imej kertas dinding ini di tapak web rasmi Microsoft, anda boleh memuat turunnya daripada sumber lain. Kami menemui salinan kertas dinding desktop Windows 10 asal dalam resolusi 4K pada Imgur. Selain itu, terdapat saiz lain dan lebih banyak dinding lalai

ThinkPHP mempunyai berbilang versi yang direka untuk versi PHP yang berbeza. Versi utama termasuk 3.2, 5.0, 5.1 dan 6.0, manakala versi kecil digunakan untuk membetulkan pepijat dan menyediakan ciri baharu. Versi stabil terkini ialah ThinkPHP 6.0.16. Apabila memilih versi, pertimbangkan versi PHP, keperluan ciri dan sokongan komuniti. Adalah disyorkan untuk menggunakan versi stabil terkini untuk prestasi dan sokongan terbaik.

Langkah-langkah untuk menjalankan ThinkPHP Framework secara setempat: Muat turun dan nyahzip ThinkPHP Framework ke direktori tempatan. Buat hos maya (pilihan) yang menunjuk ke direktori akar ThinkPHP. Konfigurasikan parameter sambungan pangkalan data. Mulakan pelayan web. Mulakan aplikasi ThinkPHP. Akses URL aplikasi ThinkPHP dan jalankannya.
