اذهب إلى المحتوى
  • 0

كيفية تخزين كل إستعلامات SQL في لارافيل Laravel؟

Emad Saif

السؤال

لدي مشروع لارافيل Laravel كبير نوعًا، واريد أن أقوم بتخزين كل إستعلامات SQL التي تتم في التطبيق لكي أقوم بتحليلها ومحاولة تحسينها أكثر.

هل يوفر لارافيل Laravel إمكانية للقيام بهذا الأمر؟ أو هل توجد حزمة تساعد على تخزين إستعلامات SQL التي يتم تنفيذها في التطبيق؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 2

في حال كان قصدك تخزين الاستعلام كنص ضمن قاعدة البيانات، يمكنك ذلك من خلال إضافة خدمة إلى AppServiceProvider من خلال الاستماع إلى أي استعلام يجري على مستوى التطبيق:

public function boot()
    {
        DB::listen(function($query) {
            //يمكنك استبدال عملية الطباعة إلى تخزين المتغيرات التي ترغب بها ضمن قاعدة البيانات
            Log::info(
                $query->sql,
                $query->bindings,
                $query->time
            );

        });
    }

وفي بعض النسخ السابقة من لارافل يمكن الاستماع للحدث query من خلال الطريقة التالية:

DB::listen(function($query) { 
  \Log::info($query->sql); 
});

أو

\Event::listen('illuminate.query', function($sql) {

        \Log::info($sql);
});

ولكن عند الاستماع لأحداث قاعدة البيانات، يجب عليك إضافة متغيّر ما والتحقق منه قبل تخزين نتيجة الاستعلام في حال كان استعلام تحليلي أو استعلام عادي ضمن التطبيق لكي لا يتم تخزين الاستعلامات التحليلية (التي تنفّذ الحدث) ضمن قاعدة البيانات

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

أتذكر استخدام Laravel telescope لمثل هذا الغرض. هي ملحقة محلية ببيئة تطوير لارافيل توفر نفاصيل اكثر دقة على الطلبات الواردة إلى تطبيقك، والاستثناءات ، وإدخالات السجل، والبريد، والإشعارات، وعمليات التخزين المؤقت، والمهام المجدولة، ومن بينها استعلامات قاعدة البيانات. يمكن تثبيتها كحزمة خارجية.

في القسم الخاص باستعلامات قواعد البيانات تتاح قائمة لكامل استعلامات قواعد البيانات التي تم تنفيذها. سرعة التنفيذ ومدته وتفاصيل أخرى. بجانب انها صديقة جدا لبيئة التطوير. أظن انها ما تبحث عنه. يمكنك استعمالها لتحسين جودة استعلامات قواعد البيانات لديك.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...