Mengoptimumkan Import Pangkalan Data MySQL dalam PHP: Membahagikan Pertanyaan Dengan Boleh Dipercaya
Dalam bidang pembangunan web, senario timbul apabila mengemas kini tapak web yang dihoskan pada pelayan kongsi memerlukan kemas kini pangkalan data. Walau bagaimanapun, ketidakupayaan untuk mengakses MySQL secara luaran menimbulkan cabaran. Untuk menangani ini, mengimport fail MySQL melalui PHP menjadi perlu. Artikel ini meneroka penyelesaian yang cekap untuk memisahkan fail pangkalan data MySQL yang besar kepada pertanyaan individu dan mengimportnya menggunakan PHP.
Pernyataan Masalah
Objektifnya adalah untuk membangunkan kaedah yang boleh dipercayai untuk memisahkan fail pangkalan data yang besar kepada pertanyaan individu tanpa membuka keseluruhan fail secara serentak. Kekangan termasuk ketiadaan fungsi baris arahan MySQL, LOAD DATA INFILE, phpMyAdmin, dan mysqli_multi_query().
Penyelesaian: Fungsi SplitSQL
Penyelesaian terletak pada memori -fungsi mesra dipanggil SplitSQL, yang berulang melalui fail baris demi baris dan mengenal pasti aksara pembatas pertanyaan. Ia mengumpul baris ke dalam tatasusunan sehingga pembatas ditemui, membentuk pertanyaan lengkap. Fungsi tersebut kemudiannya melaksanakan pertanyaan dan memberikan maklum balas tentang kejayaan atau kegagalannya.
Pelaksanaan
<code class="php">function SplitSQL($file, $delimiter = ';') { set_time_limit(0); if (is_file($file) === true) { $file = fopen($file, 'r'); if (is_resource($file) === true) { $query = array(); while (feof($file) === false) { $query[] = fgets($file); if (preg_match('~' . preg_quote($delimiter, '~') . '\s*$~iS', end($query)) === 1) { $query = trim(implode('', $query)); if (mysql_query($query) === false) { echo '<h3>ERROR: ' . $query . '</h3>' . "\n"; } else { echo '<h3>SUCCESS: ' . $query . '</h3>' . "\n"; } while (ob_get_level() > 0) { ob_end_flush(); } flush(); } if (is_string($query) === true) { $query = array(); } } return fclose($file); } } return false; }</code>
Pengujian dan Output
Setelah menguji dengan longgokan SQL phpMyAdmin yang besar, fungsi SplitSQL membuahkan hasil yang berjaya. Input dan output sampel adalah seperti berikut:
Data Ujian
<code class="sql">CREATE TABLE IF NOT EXISTS "test" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "name" TEXT, "description" TEXT ); BEGIN; INSERT INTO "test" ("name", "description") VALUES (";;;", "something for you mind; body; soul"); COMMIT; UPDATE "test" SET "name" = "; " WHERE "id" = 1;</code>
Output
SUCCESS: CREATE TABLE IF NOT EXISTS "test" ( "id" INTEGER PRIMARY KEY AUTOINCREMENT, "name" TEXT, "description" TEXT ); SUCCESS: BEGIN; SUCCESS: INSERT INTO "test" ("name", "description") VALUES (";;;", "something for you mind; body; soul"); SUCCESS: COMMIT; SUCCESS: UPDATE "test" SET "name" = "; " WHERE "id" = 1;
Kesimpulan
Fungsi SplitSQL menyediakan penyelesaian yang boleh dipercayai untuk membelah besar Fail pangkalan data MySQL ke dalam pertanyaan individu dan melaksanakannya menggunakan PHP. Ia berkesan menangani kekangan yang disebutkan di atas dan membolehkan import automatik kemas kini pangkalan data. Pendekatan ini memastikan penyelenggaraan pangkalan data yang lancar dalam persekitaran pengehosan kongsi.
Atas ialah kandungan terperinci Bagaimana untuk Mengimport Fail MySQL yang Besar ke dalam Persekitaran Hosting Dikongsi Menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!