"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment importer efficacement des fichiers MySQL volumineux dans un hébergement partagé à l'aide de PHP ?

Comment importer efficacement des fichiers MySQL volumineux dans un hébergement partagé à l'aide de PHP ?

Publié le 2024-11-19
Parcourir:827

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

Importation efficace de fichiers MySQL en PHP : fractionnement des requêtes pour l'hébergement partagé

Dans le domaine du développement Web, la nécessité d'importer des fichiers de base de données volumineux tout en utilisant couramment des fournisseurs d'hébergement partagé surgit. Malheureusement, l'accès à MySQL via la ligne de commande peut être restreint, ce qui nécessite une solution basée sur PHP pour analyser et exécuter les requêtes.

Pour relever ce défi, une fonction robuste connue sous le nom de SplitSQL() a été développée pour diviser de manière fiable un fichier de base de données en requêtes individuelles sans consommer de mémoire excessive.

Comment ça marche

SplitSQL() exploite une approche de lecture de fichier, en parcourant le fichier ligne par ligne. Il identifie les requêtes en détectant le délimiteur spécifié (; par défaut) en fin de ligne. Une fois qu'une requête complète est assemblée, elle est exécutée immédiatement à l'aide de mysql_query().

Principales fonctionnalités

  • Efficacité en mémoire : En évitant d'avoir à charger l'intégralité de la requête. fichier en mémoire, SplitSQL() est adapté à la gestion de fichiers volumineux sans problèmes de performances.
  • Tolérance aux pannes : Si une requête échoue, une erreur les messages sont affichés à des fins de débogage.
  • Mise en mémoire tampon de sortie : Pour éviter l'épuisement de la mémoire, SplitSQL() vide la sortie après chaque exécution de requête.

Exemple d'utilisation

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);
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3