«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно импортировать большие файлы MySQL на общий хостинг с помощью PHP?

Как эффективно импортировать большие файлы MySQL на общий хостинг с помощью PHP?

Опубликовано 19 ноября 2024 г.
Просматривать:337

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

Эффективный импорт файлов MySQL в PHP: разделение запросов для общего хостинга

В сфере веб-разработки часто возникает необходимость импортировать большие файлы базы данных при использовании провайдеров общего хостинга. возникает. К сожалению, доступ к MySQL через командную строку может быть ограничен, что требует решения на основе PHP для анализа и выполнения запросов.

Для решения этой проблемы была разработана надежная функция, известная как SplitSQL(), позволяющая надежно разделить файл базы данных на отдельные запросы без использования лишней памяти.

Как это работает

SplitSQL() использует подход чтения файлов, проходя по файлу построчно. Он идентифицирует запросы, обнаруживая указанный разделитель (; по умолчанию) в конце строки. Как только полный запрос собран, он немедленно выполняется с помощью mysql_query().

Основные особенности

  • Эффективное использование памяти: Избегая необходимости загружать весь запрос файл в память, функция SplitSQL() подходит для обработки больших файлов без проблем с производительностью.
  • Отказоустойчивость: Если запрос завершается неудачно, для целей отладки отображаются сообщения об ошибках.
  • Буферизация вывода: Чтобы предотвратить исчерпание памяти, функция SplitSQL() сбрасывает выходные данные после каждого выполнения запроса.

Пример использования

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);
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3