mysql バックアップおよびリカバリ ボリューム処理を実装するための PHP メソッド、mysql volume_PHP チュートリアル
mysqlバックアップとボリューム処理の復元を実装するphpメソッド、mysqlボリューム
この記事の例では、PHP で mysql のバックアップとリカバリのボリューム処理を実装する方法を説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
ボリューム処理とは、処理したいデータを小さなファイルに分割して処理することです。ここでは、mysql データベースのボリュームバックアップを実現し、バックアップ用のテーブルを選択し、単一の SQL を実現するための PHP mysql バックアップおよび復元ボリューム処理クラスを紹介します。ファイルとボリュームの SQL インポート
各巻のインポートカテゴリとアイデアの詳細な説明
データベースのインポートとエクスポートはバックエンドに必要な機能です。ネットで検索するとデータベースのインポートとエクスポートについてたくさん見つかりますが、基本的には必要のないものがたくさん含まれている大規模なシステムです。他の人のものを自分のバックエンドに統合するのが好きではないので、私は自分のものをたくさん参照し、簡単に呼び出せるようにボリュームインポートクラスを書きました。どなたでもご参加いただけます。
ここでのボリューム ファイルは、単一 SQL ファイルとボリューム SQL インポートを実装するために「_v1.sql」で終わります。ボリューム インポートの場合、現在のボリュームを残りのボリュームにインポートするかどうかを選択できます。完了するには、クラスを直接呼び出すだけです。
それらは、ホスト、ユーザー名、パスワード、データベース名、データベースエンコーディングです
SQL ファイル、単一の SQL のみをインポートするかどうか (つまり、他のボリュームがある場合はインポートされません)。
バックアップ SQL ファイルを一覧表示する方法や SQL を選択する方法に相当しますが、これはこのカテゴリには含まれておらず、非常に簡単です。
現時点では、データベースのインポートのみが実装されています。具体的なアイデアと実装コードは次のとおりです。以下:
* @著者やぬえ
* 注: ボリューム ファイルは _v1.sql で終わります
* 機能: 単一の SQL ファイルとボリュームの SQL インポートを実装します。ボリュームのインポートでは、現在のボリュームを残りのボリュームにインポートするかどうかを選択できます。 * 使用方法:
*
*
*------------------------------------------------ - -----------------
//それらは、ホスト、ユーザー名、パスワード、データベース名、データベースエンコーディングです
$db = 新しい DataManage ( 'localhost', 'root', 'root', 'test', 'utf8' ); //SQL ファイル、単一の SQL のみをインポートするかどうか (つまり、他のボリュームがある場合はインポートされません)
$db->restore ( './backup/20120516211738_all_v1.sql', false ); *------------------------------------------------ - ------------------------
*/
クラス DataManage {
var $db; // データベース接続
var $database; // 使用されるデータベース
var $sqldir; // データベースのバックアップ フォルダー
/**
*初始化
*
* @param 文字列 $host
* @param string $ユーザー名
* @param string $password
* @param 文字列 $database
* @param 文字列 $charset
*/
function __construct($host = 'localhost', $username = 'root', $password = '', $database = 'test', $charset = 'utf8') {
$this->ホスト = $host; $this->ユーザー名 = $ユーザー名
$this->パスワード = $パスワード
$this->データベース = $データベース
$this->charset = $charset; // データベースに接続します
$this->db = mysql_connect ( $this->host, $this->username, $this->password ) または die ( "データベース接続に失敗しました。" ); //使用するデータベースを選択します
mysql_select_db ( $this->database, $this->db ) or die ( "データベースを開けません" ); // データベースのエンコード方法
mysql_query ( 'SET NAMES ' . $this->charset, $this->db ); }
/**
* バックアップデータをインポートします
* 説明: ボリューム ファイル形式 20120516211738_all_v1.sql
*
* @param 文字列 $sqlfile
* @param bool $single
*/
関数リストア($sqlfile, $single = FALSE) {
// ファイルが存在するかどうかを確認します
if (! file_exists ( $sqlfile )) {
exit ( "ファイルが存在しません。確認してください" ); }
$this->ロック ( $this->データベース ); // データベースの保存場所を取得します
$sqlpath = パス情報 ($sqlfile); $this->sqldir = $sqlpath ['ディレクトリ名']; // サブボリュームが含まれているかどうかを確認し、20120516211738_all_v1.sql を _v から分離します。サブボリュームがある場合は、サブボリュームがあることを意味します
$volume = 爆発 ( "_v", $sqlfile ); $volume_path = $volume [0]; echo "プログラムが終了しないように、ブラウザを更新して閉じないでください。注意しないとデータベース構造が破損します
"; echo "バックアップ データをインポートしています。お待ちください!
"; if (emptyempty ( $volume [1] ) || $single) {
echo "sql:' をインポートしています。 // 分割はありません
If ($this->_import ( $sqlfile )) {
echo "データベースは正常にインポートされました!"; } その他 {
exit ('データベースのインポートに失敗しました!' ); }
} その他 {
// サブボリュームがある場合は、現在のサブボリュームを取得し、残りのサブボリュームをループで実行します
$volume_id = 爆発 ( ".sq", $volume [1] ); //現在のボリュームは $volume_id です
$volume_id = intval ( $volume_id [0] ); while ( $volume_id ) {
$tmpfile = $volume_path .$volume_id
// 他のボリュームが存在するため、実行を続行します
If (file_exists ( $tmpfile )) {
// インポートメソッドを実行します
echo "ボリューム $volume_id: ''; If ($this->_import ( $tmpfile )) {
} その他 {
exit ( "ボリュームのインポート $volume_id: " . $tmpfile . '失敗! データベース構造が破損している可能性があります! ボリューム 1 のインポートから開始してください。 '); }
} その他 {
echo "このボリュームのバックアップはすべて正常にインポートされました!
"; 戻る
}
$volume_id ++; }
}
}
/**
* SQLをデータベースにインポートします(通常のインポート)
*
* @param 文字列 $sqlfile
* @return ブール値
*/
プライベート関数 _import($sqlfile) {
$name = ベース名 ( $sqlfile ); $sqls = ファイル ( $sqlfile ); foreach ( $sqls as $sql ) {
str_replace ( "r", "", $sql ); str_replace ( "n", "", $sql ); if (! mysql_query ( トリム ( $sql ), $this->db ))
false を返します。 }
true を返します。 }
//データベース接続を閉じる
プライベート関数 close() {
mysql_close ( $this->db ); }
// バックアップまたはインポート中のエラーを避けるためにデータベースをロックします
プライベート関数 lock($tablename, $op = "WRITE") {
if (mysql_query ( "ロックテーブル " . $tablename . " " . $op ))
true を返します。 それ以外は
false を返します。 }
// ロックを解除します
プライベート関数unlock() {
if (mysql_query ( "テーブルのロックを解除" ))
true を返します。 それ以外は
false を返します。 }
// 破壊
関数 __destruct() {
mysql_query ( "テーブルのロックを解除", $this->db ); mysql_close ( $this->db ); }
}
?>
MySQL のバックアップと復元はボリュームで処理され、呼び出しが簡単です。
各巻の紹介アイデア:
SQL ファイルを 1 行ずつ読み取り、各行を完全な SQL ステートメントとして配列に保存し、ループして実行してデータベースに挿入します。 ただし、create table ステートメントは複数の行に分割する必要があります。かなり時間がかかりました。主にクラスファイルが占有されているためです。
アップデートの説明:
1. SQLインポート時にSQLファイル内のコメント「-」を削除することで、SQL内のシングルクォーテーションとダブルクォーテーションがインポートできない問題を解決します
2. 効率を向上させるために SQL ステートメントを配列に再結合し、配列から SQL を読み取ってインポートする必要を回避し、単一行を読み取った後に SQL を直接実行します。
エクスポートされた SQL ファイル形式は次のとおりです:
コードをコピーします コードは次のとおりです:
-- -- MySQL データベース ダンプ
-- DBManage クラス、Power By yanue によって作成されました。 ---- ホスト: ローカルホスト
-- 作成日: 2012 年 10 月 6 日 22:32-- MySQL バージョン: 5.1.50-コミュニティ
-- PHP バージョン: 5.3.9-ZS5.6.0--
-- データベース: `テスト`
--
`aa` が存在する場合はテーブルを削除します
; テーブルを作成します `aa` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT、
`content` テキストが NULL ではありません、
主キー (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 デフォルト CHARSET=utf8;
--
-- テーブル aa のデータを転送します
--
INSERT INTO `aa` VALUES('1','
テストデータです笑');
以下はクラスコードです:
コードをコピーします
コードは次のとおりです:
* @著者やぬえ
* @copyright Copyright (c) 2012 yanue.net
* @バージョン 1.1
※作成時期:2012年5月21日
更新日: 2012 年 10 月 6 日
更新手順: 1. SQL をインポートするときに SQL ファイル内のコメント「--」を削除することで、SQL 内の単一引用符と二重引用符がインポートできない問題が解決されます
2. 単一行を読み取った後、SQL を直接実行します。これにより、効率を向上させるために SQL ステートメントを配列に再結合し、配列から SQL を読み取ってインポートする必要がなくなります
* 注: ボリューム ファイルは _v1.sql (20120522021241_all_v1.sql) で終わります
* 機能: mysql データベースのボリュームバックアップを実現、バックアップ用のテーブルを選択、単一 SQL ファイルとボリューム SQL インポートを実現
* 使用方法:
*
* ------1. データベースのバックアップ(エクスポート) ---------------------------------- -- ------------------------
//それらは、ホスト、ユーザー名、パスワード、データベース名、データベースエンコーディングです
$db = 新しい DBManage ( 'localhost', 'root', 'root', 'test', 'utf8' ); // パラメータ: バックアップするテーブル (オプション)、バックアップ ディレクトリ (オプション、デフォルトはバックアップ)、ボリューム サイズ (オプション、デフォルトは 2000、つまり 2M)
$db->バックアップ (); * ------2. データベースのリカバリ(インポート) ---------------------------------- -- ------------------------
//それらは、ホスト、ユーザー名、パスワード、データベース名、データベースエンコーディングです
$db = 新しい DBManage ( 'localhost', 'root', 'root', 'test', 'utf8' ); //パラメータ: SQLファイル
$db->restore ('./backup/20120516211738_all_v1.sql'); *------------------------------------------------ - ------------------------
*/
クラス DbManage {
var $db; // データベース接続
var $database; // 使用されるデータベース
var $sqldir; // データベースのバックアップ フォルダー
// 改行文字
プライベート $ds = "n"; // SQLを格納する変数
パブリック $sqlContent = ""; //各 SQL ステートメントの終了文字
パブリック $sqlEnd = ";";
/**
*初始化
*
* @param 文字列 $host
* @param string $ユーザー名
* @param string $password
* @param 文字列 $database
* @param 文字列 $charset
*/
関数 __construct($host = 'localhost', $username = 'root', $password = '', $database = 'test', $charset = 'utf8') {
$this->host = $host; $this->ユーザー名 = $ユーザー名; $this->password = $password; $this->database = $database; $this->charset = $charset; set_time_limit(0);//時間制限なし
@ob_end_flush(); // データベースに接続します
$this->db = @mysql_connect ( $this->host, $this->username, $this->password ) または die( '
Mysql 接続エラー: '.mysql_error().'
'); //使用するデータベースを選択しますmysql_select_db ( $this->database, $this->db ) または die('
Mysql 接続エラー:' .mysql_error().'
'); // データベースのエンコード方法mysql_query ( 'SET NAMES ' . $this->charset, $this->db );
}
/*
* * 新しいクエリデータベーステーブルを追加しました
*/
関数 getTables() {
$res = mysql_query ( "SHOW TABLES" ); $tables = 配列 (); while ( $row = mysql_fetch_array ( $res ) ) {
$tables [] = $row [0]; }
$tables を返します。 }
/*
*
*------------------------------------------データベースバックアップ開始---- -------------------------------------------------- ----
*/
/**
* データベースのバックアップ
* パラメーター: バックアップするテーブル (オプション)、バックアップ ディレクトリ (オプション、デフォルトはバックアップ)、ボリューム サイズ (オプション、デフォルトは 2000、つまり 2M)
*
* @param $string $dir
* @param int $size
* @param $string $テーブル名
*/
関数バックアップ($tablename = '', $dir, $size) {
$dir = $dir : './backup/'; //ディレクトリを作成します
if (! is_dir ( $dir )) {
mkdir ( $dir, 0777, true ) または die ( 'フォルダーの作成に失敗しました' ); }
$サイズ = $サイズ ? : 2048; $sql = ''; // 特定のテーブルのみをバックアップします
if (! emptyempty ( $tablename )) {
If(@mysql_num_rows(mysql_query("SHOW TABLES LIKE '".$tablename."'")) == 1) {
$this->_showMsg('Table-' . $tablename .'-存在しません、確認してください!',true); 死ぬ(); $this->_showMsg('テーブル ' . $tablename.''); // ダンプ情報を挿入します
$sql = $this->_retrieve (); //テーブル構造情報を挿入
$sql .= $this->_insert_table_struct ( $tablename ); // データを挿入
$data = mysql_query ( "select * from " . $tablename ); // ファイル名の最初の部分
$filename = date ( 'YmdHis' )
。 // フィールドの数
$num_fields = mysql_num_fields ( $data ); $p = 1; // 各レコードをループします
while ( $record = mysql_fetch_array ( $data ) ) {
// シングルレコード
$sql .= $this->_insert_record ( $tablename, $num_fields, $record ); // ボリュームサイズより大きい場合はファイルを書き込みます
If (strlen ( $sql ) >= $size * 1024) {
$file = $ファイル名 .$p
If ($this->_write_file ($sql, $file, $dir)) {
$this->_showMsg("Table-" . $tablename . "- Volume-" . $p . "-データのバックアップが完了しました、バックアップ ファイル[ " .$dir . $file ." ]");
} else {
$this->_showMsg("バックアップ テーブル -" . $tablename . "- 失敗しました",true); falseを返します。 $p ++; // $ SQL 変数を空にリセットし、変数のサイズを再計算します
$sql = ""; // 時間内にデータをクリアします
unset($data,$record); // SQL のサイズだけではサイズをスコアリングするのに十分ではありません
if ($sql != "") {
$ファイル名 .= "_v" .sql; if ($this->_write_file ( $sql, $filename, $dir )) {
$this->_showMsg( "テーブル-" . $tablename . "-ボリューム-" . $p . "-データのバックアップが完了しました、バックアップ ファイル[ " .$dir . $filename ." ]");
} それ以外 { $this->_showMsg("バックアップ ボリューム-" . $p . "-失敗
"); false を返します。 $this->_showMsg("おめでとうございます! バックアップが成功しました"); } else {
$this->_showMsg('バックアップ中'); // すべてのテーブルをバックアップします
If ($tables = mysql_query ( "show table status from " . $this->database )) {
$ This-& gt; _Showmsg ("データベース構造の読み取りに成功しました!"); $this->_showMsg("データベース構造の読み取りに失敗しました!"); 終了 (0); // ダンプ情報を挿入します
$sql .= $this->_retrieve (); // ファイル名の最初の部分
$filename = date ( 'YmdHis' )
; // すべてのテーブルを検索します
$tables = mysql_query ( 'SHOW TABLES' ); $p = 1; // すべてのテーブルをループします
while ( $table = mysql_fetch_array ( $tables ) ) {
$tablename = $table [0]; $sql .= $this->_insert_table_struct ( $tablename ); $data = mysql_query ( "select * from " . $tablename ); $num_fields = mysql_num_fields ( $data );
// 各レコードをループします
while ( $record = mysql_fetch_array ( $data ) ) {
// シングルレコード
$sql .= $this->_insert_record ( $tablename, $num_fields, $record ); // ボリュームサイズより大きい場合はファイルを書き込みます
If (strlen ( $sql ) >= $size * 1000) {
$file = $ファイル名 .$p
// ファイルを書き込む 文 If ($this->_write_file ($sql, $file, $dir)) {
$this->_showMsg("-ボリューム-" . $p . "-データのバックアップが完了しました。バックアップ ファイル[".$dir.$ファイル。" ]"); $this->_showMsg("ボリューム-" . $p . "-バックアップに失敗しました!",true); falseを返します // 次のサブロール个 $p ++; // $sql 変数を空にリセットし、変数のサイズを再計算します
$sql = ""; // SQL のサイズだけではサイズをスコアリングするのに十分ではありません
if ($sql != "") {
$ファイル名 .= "_v" .sql"; if ($this->_write_file ( $sql, $filename, $dir )) {
$this->_showMsg("-ボリューム-" . $p . "-データのバックアップが完了しました。バックアップ ファイル[".$dir.$ファイル名。" ]"); } それ以外 { $this->_showMsg("ボリューム-" . $p . "-バックアップに失敗しました",true); false を返します。 $this->_showMsg("おめでとうございます! バックアップが成功しました"); }
}
// 時間内に情報を出力します
プライベート関数 _showMsg($msg,$err=false){
$err = $err ? "エラー:" ; echo "
".$msg."
"; フラッシュ();}
/**
* 基本的なデータベースのバックアップ情報を挿入します
*
* @return 文字列
*/
プライベート関数 _retrieve() {
$value = ''; $value .= '--'
$value .= '-- MySQL データベース ダンプ'
$value .= '-- DbManage クラス、Power By yanue によって作成されました ' 。 $value .= '-- http://yanue.net '
$value .= '--'
$value .= '-- ホスト: ' . $this->ds; $value .= '-- 日付: ' . date ( 'Y' ) . ' month ' . ' day' .私' ) $this->ds; $value .= '-- MySQL バージョン: ' . mysql_get_server_info ()
$value .= '-- PHP バージョン: ' . phpversion ()
$value .= $this->ds; $value .= '--'
$value .= '-- データベース: `' . $this->ds; $value .= '--' . $this->ds; $value .= '-------------------------------------------- -- ----------'; $value .= $this->ds . $this->ds;
$value を返します。 }
/**
* テーブル構造を挿入します
*
* @param 不明なタイプ $table
* @return 文字列
*/
プライベート関数 _insert_table_structor($table) {
$sql = ''; $sql .= "--" . $this->ds;$sql .= "--テーブル構造" .$this->ds; $sql .= "--" . $this->ds;
// テーブルが存在する場合は削除します
$sql .= "DROP TABLE IF EXISTS `" . $this->sqlEnd
// 詳細なテーブル情報を取得します
$res = mysql_query ( 'SHOW CREATE TABLE `' . $table . '`' ); $row = mysql_fetch_array ( $res ); $sql .= $row [1]; $sql .= $this->sqlEnd . //
を追加します $sql .= $this->ds; $sql .= "--" .$this->ds; $sql .= "-- テーブル内のデータを転送します " .this->ds; $sql .= "--" .$this->ds; $sql .= $this->ds; 戻り $sql; }
/**
* 単一レコードを挿入します
*
* @param string $table
* @param int $num_fields
* @param 配列 $record
* @return 文字列
*/
プライベート関数 _insert_record($table, $num_fields, $record) {
// カンマ区切りの SQL フィールド
$挿入 = ''; $comma = ""
; $insert .= "INSERT INTO `" . $table . "` VALUES(";
) // 各サブセクションのコンテンツをループします
for($i = 0; $i $insert .= ($comma . "'" . mysql_escape_string ( $record [$i] ) . "'"); $comma = ","; }
$insert .= ");" . 戻り $insert; }
/**
*ファイルに書き込む
*
* @param 文字列 $sql
* @param string $ファイル名
* @param 文字列 $dir
* @return ブール値
*/
プライベート関数 _write_file($sql, $filename, $dir) {
$dir = $dir : './backup/'; //ディレクトリを作成します
if (! is_dir ( $dir )) {
mkdir ( $dir, 0777, true ); }
$re = true; If (! @$fp = fopen ( $dir . $filename, "w+" )) {
$re = false; $this->_showMsg("SQL ファイルを開けませんでした!",true); }
If (! @fwrite ( $fp, $sql )) {
$re = false; $this->_showMsg("SQL ファイルの書き込みに失敗しました。ファイルが書き込み可能かどうかを確認してください",true); }
if (! @fclose ( $fp )) {
$re = false; $this->_showMsg("SQL ファイルを閉じることができませんでした!",true); }
$re を返します。 }
/*
*
* ---------------------------- 上: データベースのエクスポート ----------- 分割線 ---- ------次: データベースのインポート--------------------------------
*/
/**
* バックアップデータをインポートします
* 説明: ボリューム ファイル形式 20120516211738_all_v1.sql
* パラメータ: ファイルパス (必須)
*
* @param 文字列 $sqlfile
*/
関数復元($sqlfile) {
// ファイルが存在するかどうかを確認します
if (! file_exists ( $sqlfile )) {
$this->_showMsg("SQL ファイルが存在しません。確認してください。",true); 終了 (); }
$this->lock ( $this->database ); // データベースの保存場所を取得します
$sqlpath = パス情報 ($sqlfile); $this->sqldir = $sqlpath ['dirname']; // サブボリュームが含まれているかどうかを確認し、20120516211738_all_v1.sql を _v から分離します。存在する場合は、サブボリュームがあることを意味します
$volume = 爆発 ( "_v", $sqlfile ); $volume_path = $volume [0]; $this->_showMsg("プログラムが終了しないように、ブラウザを更新して閉じないでください。注意しないと、データベース構造が破損します。"); $this->_showMsg("バックアップ データをインポート中です。お待ちください!"); if (emptyempty ( $volume [1] )) {
$this->_showMsg ( "SQL のインポート: " . $sqlfile . ''); If ($this->_import ( $sqlfile )) {
$this->_showMsg( "データベースは正常にインポートされました!"); $this->_showMsg('データベースのインポートに失敗しました!', true); 終了 (); } else {
// スクロールがある場合、現在の 1 ポイント ボリュームが表示され、残りのスクロールが実行されます。 $volume_id =explode ( ".sq", $volume [1] ); // 現在のボリュームは $volume_id です
$volume_id = intval ( $volume_id [0] ); while ( $volume_id ) {
$tmpfile = $volume_path .$volume_id
// 他のボリュームが存在するため、実行を続行します
If (file_exists ( $tmpfile )) {
// インポートメソッドを実行します
$this->msg .= "ボリューム $volume_id: '
'; If ($this->_import ($tmpfile)) {
} else {
$volume_id = $volume_id :1; exit ( "ボリュームのインポート: " . $tmpfile . '失敗! データベース構造が破損している可能性があります! ボリューム 1 からインポートしてみてください' );
} それ以外 { $ This-& gt; msg. = "このサブバックアップは正常に導入されました! & Lt; br /& gt;";
$volume_id ++; }if (emptyempty ( $volume [1] )) {
$this->_showMsg ( "SQL のインポート: " . $sqlfile . ''); If ($this->_import ( $sqlfile )) {
$this->_showMsg( "データベースは正常にインポートされました!"); $this->_showMsg('データベースのインポートに失敗しました!',true); 終了 (); } else {
// スクロールがある場合、current は現在のロール数となり、残りのスクロールが実行されます。 $volume_id =explode ( ".sq", $volume [1] ); // 現在のボリュームは $volume_id です
$volume_id = intval ( $volume_id [0] ); while ( $volume_id ) {
$tmpfile = $volume_path .$volume_id
// 他のボリュームが存在するため、実行を続行します
If (file_exists ( $tmpfile )) {
// インポートメソッドを実行します
$this->msg .= "ボリューム $volume_id: '
'; If ($this->_import ($tmpfile)) {
} else {
$volume_id = $volume_id :1; exit ( "ボリュームのインポート: " . $tmpfile . '失敗! データベース構造が破損している可能性があります! ボリューム 1 からインポートしてみてください' );
} それ以外 {$ this> msg。= "このボリュームのすべてのバックアップは正常にインポートされました!< br />";
$volume_id ++; }
}
/**
* SQLをデータベースにインポートします(通常のインポート)
*
* @param 文字列 $sqlfile
* @return ブール値
*/
プライベート関数 _import($sqlfile) {
// SQL ファイルに含まれる SQL ステートメントの配列
$sqls = 配列
; $f = fopen ( $sqlfile, "rb" ); //テーブルバッファ変数を作成します
$create_table = ''; while ( ! feof ( $f ) ) {
// SQLの各行を読み取ります $line = fgets ( $f ); // このステップでは、作成されたテーブルを完全な SQL ステートメントに合成します
// 末尾に ';' (つまり、完全な SQL ステートメント、ここに insert ステートメント) が含まれておらず、'ENGINE=' (つまり、テーブルを作成する最後の文) が含まれていない場合
If (! preg_match ( '/;/', $line ) || preg_match ( '/ENGINE=/', $line )) {
// この SQL ステートメントと作成されたテーブル SQL 接続を保存します
$create_table .= $line; // テーブル作成の最後の文が含まれている場合
If (preg_match ( '/ENGINE=/', $create_table)) {
// SQL文を実行してテーブルを作成します
// 現在のテーブルをクリアし、次のテーブルを作成する準備をします
$create_table = ''; // 今回はスキップします
続けてください。 // SQL ステートメントを実行します
$this->_insert_into($line); }
fclose ( $f ); true を返します
}
// 単一の SQL ステートメントを挿入します
プライベート関数 _insert_into($sql){
If (! mysql_query ( トリム ( $sql ) )) {
$this->msg .= mysql_error (); false を返します
}
}
/*
* -----------------------------データベースインポート終了--------------- - -----------------
*/
//データベース接続を閉じる
プライベート関数 close() {
mysql_close ($this->db); }
// バックアップまたはインポート中のエラーを避けるためにデータベースをロックします
プライベート関数 lock($tablename, $op = "WRITE") {
If (mysql_query ( "lock tables " . $tablename . " " . $op ))
true を返します。 その他
false を返します
}
// ロックを解除します
プライベート関数unlock() {
if (mysql_query ( "テーブルのロックを解除" ))
true を返します。 その他
false を返します
}
// 破壊
関数 __destruct() {
If($this->db){
mysql_query ( "テーブルのロックを解除", $this->db ); mysql_close ($this->db); }
}
}
?>
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/933601.html
www.bkjia.com
ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。
