جرّب خدماتنا مجانًا - سنقوم بإصلاح أصعب مشكلة في متجرك خلال 24 ساعة!

دراسة حالة: كيف تخلصنا من مشاكل المخزون في ماجنتو 2 بشكل كامل

من أكثر التحديات التي تواجه أصحاب المتاجر الإلكترونية هي مشاكل المخزون في ماجنتو، مثل نفاد المنتج رغم توفر الكمية أو ظهور كميات سالبة.
هذه الأخطاء لا تنتج عن السيرفر أو الإضافات الأخرى، بل غالبًا بسبب موديولات MSI (Multi-Source Inventory) التي أضيفت لإدارة مستودعات متعددة -مثلاً مستودع في الرياض، مستودع في جدة، مستودع في مكة).

لكن… ماذا لو كان لديك مستودع واحد فقط مثل أكثر من 80٪ من المتاجر في الخليج؟
في هذه الحالة تصبح موديولات MSI عبئًا بلا فائدة وتؤدي إلى استعلامات ثقيلة ومشاكل مستمرة.

ادارة المخزون في Magento 2 - حل مشاكل المخزون في ماجنتو

التحديات التي واجهناها قبل العمل

مؤشر قياس المشكلةالقيمة الفعلية قبل الحل
فهرسة «inventory_stock»6 دقائق لكل دورة فهرسة
استعلام JOIN على ‎inventory_stock_1‎+900 ms تأخير في تحميل صفحات التصنيفات
شكاوى «نفاد المنتج رغم وجود الكمية»3–5 عملاء يشتكون يومياً
مشاكل البيع الزائد رغم نفاذ الكمية أثناء التخفيضات12 طلبًا خلال أسبوع قبل حل المشكلة

الحل الجذري: حذف موديولات MSI ثم ضبط المخزون الأحادي

1. حذف موديولات MSI في ماجنتو

من أجل إزالة موديولات MSI بشكل صحيح وبدون التأثير على المتجر، كانت أسرع طريقة لفعل ذلك عبر استخدام Composer replace، باستخدام package اسمها Yireo/Magento2-replace.

وها هي الأوامر التي تم تنفيذها من أجل الإزالة:

composer require yireo/magento2-replace-inventory:^4
php bin/magento setup:upgrade
php bin/magento setup:di:compile

حزمة yireo/magento2-replace-inventory تستبدل ‎43‎ موديولًا (inventory-*‎) وتحذفها كلياً من ‎مجلد الvendor.

ملاحظة: احتفِظ بنسخة من قواعد البيانات DB قبل تنفيذ الأوامر، ثم فعِّل «Manage Stock» القديم (catalog inventory).

2. تنظيف الحجوزات قبل الإزالة واستبدال الموديولات

ويتم ذلك من خلال معرفة قائمة الحجوزات الموجودة حالياً ومن ثم تفريغها باستخدام الأوامر التالية:

bin/magento inventory:reservation:list-inconsistencies
bin/magento inventory:reservation:clean

3. إعادة تفعيل فهرس «stock_status» الافتراضي

بعد التعطيل، فعِل فقط Indexer ‎cataloginventory_stock‎ وضعه On Schedule لتجنّب التعارضات.


النتيجة النهائية بالأرقام

مؤشر القياسقبل (MSI مفعَّل)بعد الحذف
زمن فهرسة المخزون6 دقائق3 دقائق 18 ث (-45 ٪)
LCP صفحة الفئة3.2 ث2.4 ث (-25 ٪)
استعلامات سالبة الكمية /يوم130< 5
شكاوي «نفاد الكمية»3–5/يوم0–1/يوم

لماذا يجب حذف موديولات MSI في حال كان لديك مستودع واحد فقط؟

  1. أداء أسرع
    • SQL ‎JOIN‎ على ‎inventory_stock_1‎ مسؤول عن تأخير يصل إلى 0.9 ثانية في كل طلب تحميل صفحة تصنيف.
  2. المخزون بشكل سليم
    • الحجوزات الغير مفرغة تترك Salable Qty بالسالب، وحذف الموديولات يُعيد الحساب إلى المخزون الأساسي بشكل سليم.
  3. فهرسة أخف
    • يتقلّص عدد Indexers من 13 إلى 7، مما يقلّل زمن الفهرسة والتعارضات بين الفهارس المتعلقة بالمخزونة.
  4. أمان وصيانة
    • أقل من ثُلث الباتشات الأمنيّة الشهريّة في ماجنتو تخص موديولات المخزون Inventory، بالتالي فإن حذفها يقلل من الحاجة للتحديث المستمرة وحالات الصيانة الطارئة لماجنتو.

أكثر مشاكل المخزون شيوعًا وحلولها السريعة

المشكلةالسبب المعتادالحل وفائدته باختصار
Salable Qty بالسالبحجوزات MSI غير مفرغة بعد إلغاء الطلبنفذ أمر reservation:clean ثم حذف MSI أو باستخدام باتش Patch MDVA-30112
منتجات متاحة بدون كميةفهرس ‎cataloginventory_stock_status‎ لا يُحدث بعد الحفظأعد الفهرسة باستخدام index:reindex، واحذف MSI إذا كان لديك مستودع واحد.
بطء حفظ المنتج في لوحة ماجنتوعمليات التحقق من الجداول ‎inventory_source_item‎ لكل حقل تابع للمخزون -الكميات-حذف موديولات MSI يخفض استدعاءات ‎isTableExists البطيئة.
طلبات كثيرة على الـ Cron jobمهام inventory_reservation_cloner وexport_stockإلغاء جدولة مهام MSI بعد التعطيل أو تخفيض تكرارها.

خطوات قابلة للتطبيق في متجرك

  1. قيم احتياجاتك الفعلية: إذا كنت تمتلك مستودع واحد، فموديولات MSI غالبًا تضيف الكثير من التعقيدات على المخزونة بدون أي فائدة تذكر لك!
  2. احذف موديولات MSI: باستخدام أوامر composer replace التي تم شرحها في هذه الدراسة.
  3. نظّف الحجوزات: قبل حذف موديولات MSI تأكيد من تنظيف الحجوزات لضمان دقة المخزون الأساسي.
  4. ارصد الأداء بشكل أسبوعي خلال الشهر الأول: تأكد من وجود انخفاض ملحوظ في إستهلاك الـ CPU وأن عملية الفهرسة أصبحت أسرع.

الأسئلة الشائعة عن مشاكل المخزون في ماجنتو

ما هو سبب ظهور Salable Qty بالسالب في ماجنتو؟

السبب الرئيسي هو موديولات MSI التي تُنشئ حجوزات غير مفرغة بعد إلغاء الطلبات، ما يؤدي إلى أرقام سالبة في الكميات.

هل حذف موديولات MSI يؤثر على متجر متعدد المستودعات؟

نعم، إذا كان لديك أكثر من مستودع لا يجب حذفها. الحل مناسب فقط للمتاجر ذات المستودع الواحد.

كيف يؤثر حذف MSI على أداء الفهرسة؟

إزالة الموديولات تقلل عدد الـ Indexers من 13 إلى 7، مما يسرّع الفهرسة ويخفف الضغط على السيرفر.

هل يمكن حل مشاكل المخزون بترقية السيرفر؟

لا، الترقية تزيد التكلفة فقط دون معالجة السبب الجذري وهو الاستعلامات الثقيلة الناتجة عن MSI.

كيف أعرف إن كانت مشاكل المخزون لدي بسبب MSI؟

إذا كان لديك مستودع واحد وتواجه بطء في الفهرسة أو كميات سالبة أو شكاوى من نفاذ الكمية رغم توفرها، فغالبًا السبب هو MSI.

الملخص

مشاكل المخزون في Magento 2 لا يتم معالجتها بترقية السيرفر فقط، بل يتم ذلك بإزالة التعقيدات والموديولات الغير ضرورية، وأهمها حذف موديولات MSI من أجل تحسين سرعة الفهرسة ‎45 ٪، وتخفيض أخطاء الكمية السالبة، وتقليل شكاوى العملاء.

هل تعاني من مشاكل المخزون في متجر ماجنتو الخاص بك؟

وهل ترغب في متجر يعمل بلا مشاكل تقنية؟
اشترك الآن في خدمات الدعم الفني والصيانة التي نقدمها لمُلاك المتاجر الإلكتروني. [تصفح باقات الدعم الفني والصيانة]