ماهي الخيارات لتسريع مشاريع Laravel
السلام عليكم.
إذا كان لدي مشروع على الانترنت: php + laravel
يتم ادخال 400+ سجل يوميًا.
ما هي أفضل التقنيات البسيطة التي يمكن بها تحسين الأداء.
وهل نستعمل non-sql أفضل ؟ مثل mongoDB .
أم أنه لا فرق ؟
ساعد بالإجابة
"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."
الإجابات (1)
وعليكم السلام ورحمة الله وبركاته
اذا تستخدم 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 راح تتعلم كيف تعمل سيرفر مخصص لاستقبال الترافيك والطلبات وبناء سيرفرات لاستضافة تطبيقك وسيرفر مخصص للكاش والجلسات وسيرفر مخصص لقواعد البيانات وتعديلهم لافضل نتيجه يسمح لك لو مستقبلا زاد الضغط تزيد سيرفرات التطبيق ويتوزع الضغط عليهم او تزيد في موارد سيرفر قاعدة البيانات او الكاش حسب يناسبك وبكل مرونه ولا ياثر على تطبيقاتك مستقبلا ?
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !