"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية استيراد ملفات MySQL الكبيرة بكفاءة إلى الاستضافة المشتركة باستخدام PHP؟

كيفية استيراد ملفات MySQL الكبيرة بكفاءة إلى الاستضافة المشتركة باستخدام PHP؟

تم النشر بتاريخ 2024-11-19
تصفح:385

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