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

السؤال

نشر

لقد قمت بتحميل مكتبة جديدة إلى مشروعي في لارافيل، ولكن عند تشغيل الأمر composer update يتوقف عن العمل ويظهر الخطأ التالي:

Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed

لقد بحثت عن المشكلة واتضح أن لها علاقة بالذاكرة، ولكن لدي مساحة حوالي 400mb، فهل المشكلة في الرام أم في مكان آخر؟

Recommended Posts

  • 0
نشر

تعني رسالة killed أن العملية استهلكت قدرا كبيرا من الذاكرة لذلك تحتاج إلى إضافة المزيد من الذاكرة إلى نظامك.

يمكنك إضافة المكتبة إلى مجلد vendor يدويا ومن ثم يجب تشغيل الأمر التالي 

composer dump-autoload --optimize

يمكنك من ملف php.ini من تغيير قيمة 

memory_limit

إلى 4G

  • 1
نشر

إن ظهور Kill في composer وتوقفه هو دليل على أن الإجرائية تقوم باستهلاك موارد كبيرة بالنسبة للمتوفرة على الجهاز، فلذلك ستحتاج لإضافة المزيد من الموارد Ram على جهازك إن أمكن. والسعة المفضلة لذلك هي حوالي 700MB بأقل حد.

ولكن في حال كنت تقوم بالإجرائية على خادم الويب مباشرةً، فلا يجب أبداً إجراء composer update. بدلاً من ذلك:

  1. قم بإجراء composer update على جهازك المحلي (بيئة التطوير) فسيكون لديك موارد أكبر من الموجودة على خادم الويب في حال كانت موارده قليلة.
  2. ثم قم بنقل المشروع عن طريق استخدام git push.
  3. ثم قم بإجراء composer install على الخادم.

حيث سيقوم الإجراء composer install بالقراءة من ملف .lock واستخدام جميع الإصدارات التي تم تعريفها ضمن المشروع بدلاً من البحث عن آخر إصدارات من جميع المكاتب المضمنة ضمن المشروع و المستخدمة أيضاً في بناء Laravel. وذلك بدوره سيخفف من العبء على الذاكرة والموارد الموجودة على الجهاز.

بشكل ممثائل، يمكنك رفع مجلد Vendor مباشرةً ضمن المشروع إلى الخادم، وبالتالي ستستغني عن الحاجة لإجراء composer install على الخادم أيضاً. ولكن عندها يجب عليك القيام بالأمر التالي بعد إجراء عملية النقل:

composer dump-autoload --optimize

وأيضاً من إحدى الحلول هي بإنشاء swap file. مثال بسيط:

mkdir -p /var/_swap_
cd /var/_swap_

#1M * 2000 ~= 2GB of swap memory. هنا يتم إضافة

dd if=/dev/zero of=swapfile bs=1M count=2000
chmod 600 swapfile
mkswap swapfile
swapon swapfile

#لتشغيلها بشكل أوتوماتيكي عند الإقلاع

echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...