2026-07-08 Abdelrhman Yasser
تحسين أداء Laravel: أفضل ممارسات الإنتاج
تحسين أداء Laravel: من البطيء إلى فائق السرعة
مدة القراءة: 35 دقيقة
مقدمة
التطبيق البطيء يحبط المستخدمين، ويضر بترتيب SEO، ويزيد تكاليف الخادم. معظم مشاكل الأداء في Laravel سببها نفس الأنماط: استعلامات N+1، التخزين المؤقت المفقود، قوائم الانتظار غير المحسّنة، والأصول غير المحسّنة.
التخزين المؤقت (Caching)
تخزين الإعدادات المؤقت
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
تخزين البيانات
$categories = Cache::remember('categories.all', 3600, function () {
return Category::all();
});
محركات التخزين المؤقت ومقارنتها:
| المحرك | السرعة | الاستمرارية | الأفضل لـ |
|---|---|---|---|
| Redis | ⚡⚡⚡⚡⚡ | نعم | الإنتاج، الجلسات، التخزين، قوائم الانتظار |
| Memcached | ⚡⚡⚡⚡⚡ | نعم | التخزين الكبير |
| File | ⚡ | نعم | التطوير |
تحسين قاعدة البيانات
إنشاء الفهارس (Indexes)
Schema::table('orders', function (Blueprint $table) {
$table->index('status');
$table->index(['user_id', 'status']);
});
التقسيم إلى أجزاء (Chunking)
// بدلاً من تحميل مليون سجل في الذاكرة
User::chunk(100, function ($users) {
foreach ($users as $user) { /* ... */ }
});
OPcache
إعدادات php.ini الموصى بها للإنتاج:
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
قوائم الانتظار (Queues)
// ❌ بطيء — ينتظر إرسال الإيميل
Mail::to($user)->send(new OrderConfirmation($order));
// ✅ سريع — يرسل المهمة لقائمة الانتظار
SendOrderConfirmation::dispatch($order)->onQueue('emails');
Laravel Octane
يحسن الأداء 10-50x بإبقاء التطبيق في الذاكرة بين الطلبات.
composer require laravel/octane
php artisan octane:start --server=swoole
قائمة النشر
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
php artisan queue:restart
أخطاء شائعة
- تعطيل OPcache في الإنتاج — كل طلب يعيد ترجمة كل ملفات PHP
- استخدام محرك
syncفي الإنتاج — يمنع الرد حتى يكتمل العمل - عدم مراقبة عمال قوائم الانتظار — يتوقف العامل دون إشعار
- تحميل كل شيء في لوحة التحكم — استخدم pagination والتخزين المؤقت
أسئلة المقابلات
- ما هو OPcache وكيف تضبطه لـ Laravel؟
- اشرح محركات التخزين المؤقت المختلفة ومتى تستخدم كل منها.
- كيف يعمل Laravel Octane وما هي مقايضاته؟
- كيف تحدد وتصلح استعلامات N+1 في الإنتاج؟