ホームページ  >  記事  >  データベース  >  PHP を使用して大きな MySQL ファイルを共有ホスティングに効率的にインポートするにはどうすればよいですか?

PHP を使用して大きな MySQL ファイルを共有ホスティングに効率的にインポートするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-28 10:17:02244ブラウズ

How to Efficiently Import Large MySQL Files into Shared Hosting Using PHP?

PHP での効率的な MySQL ファイル インポート: 共有ホスティングのクエリの分割

Web 開発の領域では、共有ホスティング プロバイダーを一般的に使用しながら、大きなデータベース ファイルをインポートする必要があります。が生じます。残念ながら、コマンド ラインを介した MySQL へのアクセスは制限されている可能性があり、クエリの解析と実行には PHP ベースのソリューションが必要になります。

この課題に対処するために、SplitSQL() として知られる堅牢な関数が開発され、

仕組み

SplitSQL() は、ファイル読み取りアプローチを活用し、ファイルを 1 行ずつ繰り返し処理します。行末にある指定された区切り文字 (デフォルトでは;) を検出することでクエリを識別します。完全なクエリが組み立てられると、mysql_query() を使用してすぐに実行されます。

主な機能

  • メモリ効率: 全体をロードする必要性を回避することで、ファイルをメモリにコピーする場合、SplitSQL() は、パフォーマンスの問題を発生させずに大きなファイルを処理するのに適しています。
  • フォールトトレランス: クエリが失敗した場合、デバッグ目的でエラー メッセージが表示されます。
  • 出力バッファリング: メモリの枯渇を防ぐために、SplitSQL() は各クエリの実行後に出力をフラッシュします。

使用例

<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;
}

// Test data
$file = '/path/to/db_dump.sql';
SplitSQL($file);</code>

以上がPHP を使用して大きな MySQL ファイルを共有ホスティングに効率的にインポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。