ماهي الخيارات لتسريع مشاريع Laravel

ZaFaR97 • منذ 6 سنوات

السلام عليكم.

إذا كان لدي مشروع على الانترنت: php + laravel

يتم ادخال 400+ سجل يوميًا.

ما هي أفضل التقنيات البسيطة التي يمكن بها تحسين الأداء.

وهل نستعمل non-sql أفضل ؟ مثل mongoDB .

أم أنه لا فرق ؟

كلمات دليلية:

ساعد بالإجابة

"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."

الإجابات (1)

Ali Majrashi • منذ 6 سنوات

وعليكم السلام ورحمة الله وبركاته 

اذا تستخدم Laravel فيه عدة امور تعملها ممكن تزيد الاداء وتحسن من سرعة المشروع ولكن دائما اهتم بالأساس وهو طريقة كتابة الكود البرمجي انه يكون:

  • سريع بتنفيذ الطلبات
  • ماينفذ استعلامات كثير لاكثر من جدول في الطلب الواحد في قاعدة البيانات 
  • استفد من ادوات Laravel وعمل الكاش لتسريع المشروع

عند تنفيذ اي Http Request داخل Controller حاول قد ماتقدر تنفذ الامور الاساسية والامور الي تحتاج وقت لتنفيذها كارسال اميلات اشعارات عمليات اخرى ممكن تتاخر ولو شوي حاول تستفيد من Event في Laravel او اذا عملياتك بسيطه ممكن تستفيد من Jobs لتنفيذها مباشره بدل Event ولما تستخدم هالشغلتين تاكد انك مفعل خاصية Queue ومستخدمها سواء مع Event او Jobs عشان مباشره تروح بجدول سواء بقاعدة البيانات او driver الي انت مختاره بالاعدادات وتترتب وتنفذ بالترتيب بدون مالزائر يحس انه فيه تاخير 

نفس الشي ينطبق على قاعدة البيانات والاستعلامات في ادخال البيانات او استدعائها اذا بتنفذ عدة اوامر دفعه وحده حاول تكتب Query غير مكلفة عند تنفيذها استفد من امكانيات Laravel عند جلب البيانات من الجداول واستخدم Eager Loading او Lazy Eager Loading وانتبه تطيح في مشكلة N+1 عند تنفيذ الاستعلامات تقدر تعرف عنهم اكثر من هذه الصفحة

https://laravel.com/docs/5.5/eloquent-relationships#eager-loading

ونفس الشي اذا جيت تدخل بيانات بقاعدة البيانات حاول قد ماتقدر تدخل الامور الاساسيه والامور الي عادي تتاخر انقلها داخل Jobs او استخدم Event في Laravel مع Queue لتنفيذها لتخفيف الضغط على قاعدة البيانات وتسريع تنفيذ الاوامر للمستخدم  

تقدر تعرف اكثر عن Jobs و Queue من هنا 

https://laravel.com/docs/5.5/queues

وتعرف اكثر عن Event من هنا 

https://laravel.com/docs/5.5/events

وعند عمل Deploy للكود فيه عدة خيارات ممكن تعملها لتسريع المشروع واستجابة الكود 

لتثبيت المكتبات نفذ Composer install مع flag تبع Optimization 


composer install --optimize-autoloader

وراجع اوامر artisan بتلقى عندك اوامر لعمل cache لعدة امور لازم تنفذها اذا ودك تسرع تنفيذ الطلبات خاصه في config و route

لتفعيل كاش config نفذ


php artisan config:cache

ولتفعيل كاش route نفذ


php artisan route:cache

تقدر تعرف عنهم اكثر بهذه الصفحة بمستندات Laravel

https://laravel.com/docs/5.5/deployment

 وبعدها استفد من امكانيات والاداوات الي توفرها php و قواعد البيانات دائما استخدم آخر اصدار من php و mysql حيث تم تحسين السرعه والاداء استفد من اضافة opcache في php هنا شرح مفصل لاعداد opcache واستخدام مكتبة لتجهيز اكواد المشروع للاستفادة منها 

https://medium.com/appstract/make-your-laravel-app-fly-with-php-opcache-9948db2a5f93

بالنسبة لاخر نقطه اش افضل نوع من قواعد البيانات هذي تعتمد على نوع المشروع اذا انت تستخدم بنية ثابته لجداولك ومترابطه اي بينهم علاقات مثل جدول user مرتبط بجدول article وجداول اخرى مرتبطه ببعضها الافضل تستخدم قواعد بيانات علائقية Relationship Database مثل Mysql للاستفاده من الادوات والدوال الي توفرها لك لتحقيق افضل فائدة 

بالنسبه للنوع الاخر من قواعد البيانات بالذات Non Relationship Database مثل ماوضعت مثال انت mongoDB  هذي تعطيك مرونه في طريقة تخزين البيانات باي شكل انت تحبه ولكن راح تنقل تعقيد التعامل مع البيانات وترتيبها وفرزها وعرضها وجلبها للكود في مشروعك بينما التعقيد في التعامل مع Relationship Database التعقيد يكون على مستوى قاعدة البيانات بكتابة Sql Query وتنفيذها فقط كل ماحسنت هذه Query سرعت تنفيذها اكثر واكثر 

خرافة اذا عندك عدد ضخم من البيانات وتحتاج سرعه خورافيه استخدم NoSql هذي غير صحيحه هنا مقال يوضحها باستخدام nodejs ونفس الشي ينطبق على اللغات الثانيه هنا

https://blog.risingstack.com/node-js-mysql-example-handling-hundred-gigabytes-of-data/

دائما استخدم الافضل لمشروعك والي يخدمك ويسهل شغلك واستفد من الاداوات الي توفرها لك لغات البرمجة وقواعد البيانات في Laravel استفد من العلاقات وربط الجداول عند بناء قاعدة البيانات و Models واستخدم الادوات الي يوفرها لك Framework مثل ماذكرنا Lazy Load وغيرها عند تنفيذ الاستعلامات وهنا كورس جدا رهيب لتسريع وكتابة مشروع Laravel سريع يشرح كل الامور الي ذكرتها لك مع اهمية استخدام Index في بناء حقول الجداول بقاعدة البيانات ادخل هنا وسجل يجيك الرابط على الاميل 

https://serversforhackers.com/laravel-perf

وعندك هنا كورس رهيب لطريقة استخدام Laravel Forge لبناء سيرفرات في بيئة مرنة وقابله للتوسع حسب الضغط Horizontal Scaling راح تتعلم كيف تعمل سيرفر مخصص لاستقبال الترافيك والطلبات وبناء سيرفرات لاستضافة تطبيقك وسيرفر مخصص للكاش والجلسات وسيرفر مخصص لقواعد البيانات وتعديلهم لافضل نتيجه يسمح لك لو مستقبلا زاد الضغط تزيد سيرفرات التطبيق ويتوزع الضغط عليهم او تزيد في موارد سيرفر قاعدة البيانات او الكاش حسب يناسبك وبكل مرونه ولا ياثر على تطبيقاتك مستقبلا ?

https://twitter.com/pro3alam/status/946261874307452928

 

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !