[{"data":1,"prerenderedAt":238},["ShallowReactive",2],{"seo-verification":3,"blog-laravel-octane-على-vps-frankenphp-docker-traefik-ma-ar":6,"promo-bar-likely":19},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-laravel-octane-على-vps-frankenphp-docker-traefik-ma-ar",{"id":9,"slug":10,"slugs":11,"title":14,"excerpt":15,"readTime":16,"views":17,"isPinned":18,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":30,"ctaBody":30,"ctaButton":142,"ctaUrl":143,"relatedPosts":144},436,"laravel-octane-على-vps-frankenphp-docker-traefik",{"fr":12,"en":13,"ar":10,"es":13},"deployer-laravel-vps-octane","laravel-octane-vps-frankenphp-docker-traefik","‎Laravel Octane على ‎VPS: ‎FrankenPHP و‎Docker و‎Traefik","الانتقال من ‎PHP-FPM إلى ‎Laravel Octane مع ‎FrankenPHP في ‎Docker Compose خلف ‎Traefik، وفهم تغييرات دورة حياة الطلبات لتجنب تسريبات الذاكرة في الإنتاج.",11,0,false,true,"2026-10-12T00:00:00+00:00","2026-10-13T14:10:28+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},4,"التطوير","developpement","bg-warning\u002F10 text-warning","dev",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-laravel-vps-octane-poster.svg","يُنشئ ‎PHP-FPM عملية لكل طلب — فعّال للتطبيقات الصغيرة، لكنه مكلف مع تزايد حركة المرور. يُغيّر ‎Laravel Octane هذا النهج: يُحمَّل التطبيق مرة واحدة في الذاكرة ويستجيب لآلاف الطلبات دون إعادة تهيئة. الكسب حقيقي: تُظهر المعايير الرسمية لـ ‎Laravel أرباحاً من ‎4× إلى ‎6× في الطلبات\u002Fالثانية مقارنةً بـ ‎PHP-FPM 8.3. ‎FrankenPHP، برنامج تشغيل ‎Octane الموصى به منذ ‎Laravel 11، يدمج خادم ‎HTTP مباشرة في الثنائي ‎PHP — لا حاجة لـ ‎nginx أمامه. على ‎VPS مع وصول ‎root و‎Docker Compose و‎Traefik، تكون عملية الترحيل نظيفة وقابلة للتكرار.",[35,39,50,53,84,87,98,132,136,139],{"type":36,"title":37,"body":38},"h2","‎PHP-FPM مقابل ‎Laravel Octane — ما الذي يتغير فعلاً","يتبع ‎PHP-FPM نموذج «لا شيء مشترك»: كل طلب يُحمّل الإطار من الصفر، وينفذ الكود، ويحرر الذاكرة. هذا متين بالتصميم — أي تسريب في طلب ما يموت معه. ‎Octane يكسر هذا العقد. يُهيّأ التطبيق مرة واحدة، ثم تتتالى الطلبات في نفس العملية. المكسب في الأداء هائل، لكن مسؤولية المطوّر تزداد.",{"type":40,"title":41,"items":42},"ul","ست فروق هيكلية يجب معرفتها",[43,44,45,46,47,48,49],"**دورة حياة مشتركة** — حاوية ‎IoC الخاصة بـ ‎Laravel والمزودين والـ ‎singletons تُنشأ مرة واحدة وتبقى بين جميع طلبات العامل. قيمة مكتوبة في ‎singleton في الطلب ‎N لا تزال موجودة في الطلب ‎N+1.","**مكسب أداء موثق** — تُظهر معايير توثيق ‎Laravel Octane الرسمية ‎4× إلى ‎6× طلبات\u002Fثانية مقارنةً بـ ‎PHP-FPM 8.3 على نقاط نهاية نموذجية، بفضل حذف تهيئة ‎PHP في كل طلب.","**المتغيرات الثابتة = تسريبات مضمونة** — أي خاصية ‎`static` مكتوبة خلال طلب تلوث الطلبات التالية. واجهات ‎Laravel Facades تخفي مراجع ثابتة؛ بعضها يُنظّفه ‎Octane والبعض الآخر لا.","**الملفات الثابتة تُخدَم بواسطة ‎FrankenPHP** — يتضمن الثنائي خادم ‎HTTP كاملاً. على ‎VPS، لا حاجة لـ ‎nginx أمام ‎PHP: يتعامل ‎FrankenPHP مع ‎TLS و‎HTTP\u002F2 و‎HTTP\u002F3 بشكل أصلي.","**ذاكرة ‎RSS مستقرة ≠ ذاكرة مسربة** — ترتفع ذاكرة العملية عند بدء التشغيل ثم تستقر. التسريب الحقيقي يظهر كنمو مستمر عبر آلاف الطلبات، ليس المستوى الأولي.","**العمال والتزامن** — يبدأ ‎Octane ‎`--workers=N` عملية. كل عامل يحتفظ بحالته الخاصة، لكن نفس العامل يعالج طلباته بالتسلسل.","**توافق ‎Laravel 10 و11** — ‎Octane 2.x يدعم ‎Laravel 10+. ‎FrankenPHP كبرنامج تشغيل متاح منذ ‎`laravel\u002Foctane` 2.3. ‎PHP 8.2 كحد أدنى، ‎PHP 8.3 موصى به.",{"type":36,"title":51,"body":52},"المتطلبات الأساسية قبل البدء","‎VPS مع **2 ‎GB RAM على الأقل** (‎4 GB موصى به لـ ‎stack كامل مع ‎Redis وعمال الطوابير)، وصول ‎root، ‎Docker 25+ و‎Docker Compose v2. يجب أن يعمل التطبيق على **‎Laravel 10 أو 11** مع تثبيت ‎`laravel\u002Foctane` 2.x. سيدير ‎Traefik 3.x شهادات ‎Let's Encrypt وتوجيه ‎HTTPS. لا حاجة لـ ‎nginx إضافي: ‎FrankenPHP يستبدل طبقة ‎HTTP بالكامل.",{"type":54,"title":55,"steps":56},"steps","نشر ‎Laravel Octane + ‎FrankenPHP + ‎Traefik في ‎Docker Compose",[57,60,63,66,69,72,75,78,81],{"title":58,"body":59},"تثبيت ‎laravel\u002Foctane ونشر الإعداد","في مشروع ‎Laravel:\n\n```bash\ncomposer require laravel\u002Foctane\nphp artisan octane:install --server=frankenphp\n```\n\nهذا ينشر `config\u002Foctane.php` ويضيف متغيرات البيئة إلى `.env.example`. تحقق من تعيين `OCTANE_SERVER=frankenphp`.",{"title":61,"body":62},"كتابة ‎Dockerfile لـ ‎FrankenPHP","```dockerfile\nFROM dunglas\u002Ffrankenphp:1-php8.3-alpine\n\nRUN install-php-extensions \\\n    pdo_mysql \\\n    redis \\\n    opcache \\\n    pcntl \\\n    zip \\\n    intl\n\nWORKDIR \u002Fapp\n\nCOPY --chown=www-data:www-data . .\n\nRUN composer install --no-dev --optimize-autoloader --no-interaction \\\n && php artisan config:cache \\\n && php artisan route:cache \\\n && php artisan view:cache\n\nEXPOSE 8000\n\nCMD [\"php\", \"artisan\", \"octane:frankenphp\", \"--host=0.0.0.0\", \"--port=8000\", \"--workers=4\", \"--max-requests=500\"]\n```\n\nخيار `--max-requests=500` يُعيد تشغيل العامل بعد 500 طلب: شبكة أمان ضد تسريبات الذاكرة المتبقية.",{"title":64,"body":65},"كتابة ‎docker-compose.yml الكامل","```yaml\nservices:\n  app:\n    build: .\n    restart: unless-stopped\n    environment:\n      APP_ENV: production\n      APP_KEY: ${APP_KEY}\n      DB_HOST: db\n      REDIS_HOST: redis\n      CACHE_DRIVER: redis\n      SESSION_DRIVER: redis\n      QUEUE_CONNECTION: redis\n      OCTANE_SERVER: frankenphp\n    networks:\n      - internal\n      - traefik\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.app.rule=Host(`${DOMAIN}`)\"\n      - \"traefik.http.routers.app.entrypoints=websecure\"\n      - \"traefik.http.routers.app.tls.certresolver=letsencrypt\"\n      - \"traefik.http.services.app.loadbalancer.server.port=8000\"\n    depends_on:\n      db:\n        condition: service_healthy\n      redis:\n        condition: service_healthy\n\n  worker:\n    build: .\n    restart: unless-stopped\n    command: [\"php\", \"artisan\", \"queue:work\", \"redis\", \"--sleep=3\", \"--tries=3\", \"--max-time=3600\"]\n    networks:\n      - internal\n    depends_on:\n      db:\n        condition: service_healthy\n      redis:\n        condition: service_healthy\n\n  scheduler:\n    build: .\n    restart: unless-stopped\n    command: [\"sh\", \"-c\", \"while true; do php artisan schedule:run >> \u002Fdev\u002Fnull 2>&1; sleep 60; done\"]\n    networks:\n      - internal\n\n  db:\n    image: mysql:8.0\n    restart: unless-stopped\n    volumes:\n      - db_data:\u002Fvar\u002Flib\u002Fmysql\n    networks:\n      - internal\n    healthcheck:\n      test: [\"CMD\", \"mysqladmin\", \"ping\", \"-h\", \"localhost\"]\n      interval: 10s\n      timeout: 5s\n      retries: 5\n\n  redis:\n    image: redis:7-alpine\n    restart: unless-stopped\n    volumes:\n      - redis_data:\u002Fdata\n    networks:\n      - internal\n    healthcheck:\n      test: [\"CMD\", \"redis-cli\", \"ping\"]\n      interval: 10s\n      timeout: 3s\n      retries: 5\n\nvolumes:\n  db_data:\n  redis_data:\n\nnetworks:\n  internal:\n  traefik:\n    external: true\n```",{"title":67,"body":68},"نشر ‎Traefik مع شهادات تلقائية","```bash\ndocker network create traefik\nmkdir -p \u002Fopt\u002Ftraefik\u002Fletsencrypt\ntouch \u002Fopt\u002Ftraefik\u002Fletsencrypt\u002Facme.json\nchmod 600 \u002Fopt\u002Ftraefik\u002Fletsencrypt\u002Facme.json\ndocker compose -f \u002Fopt\u002Ftraefik\u002Fdocker-compose.yml up -d\n```",{"title":70,"body":71},"‫تهيئة ملف ‎.env‬ للإنتاج","المتغيرات الأساسية التي يجب تعريفها على ‎VPS‬:\n\n```bash\nAPP_ENV=production\nAPP_DEBUG=false\nAPP_KEY=base64:...  # يُنشأ بـ php artisan key:generate\nDOMAIN=your-domain.com\nDB_DATABASE=laravel\nDB_USERNAME=laravel\nDB_PASSWORD=strong_password\nDB_ROOT_PASSWORD=root_strong_password\nOCTANE_SERVER=frankenphp\nCACHE_DRIVER=redis\nSESSION_DRIVER=redis\nQUEUE_CONNECTION=redis\n```\n\nلا تُودّع ‎.env‬ في ‎git‬ أبدًا. على ‎VPS‬، أدِره عبر ‎scp‬ أو مدير الأسرار.",{"title":73,"body":74},"تشغيل عمليات الترحيل بدون توقف","```bash\ndocker compose run --rm app php artisan migrate --force\n```\n\nللنشر بدون توقف، استخدم علامة `--step` على الترحيلات التي تضيف أعمدة ‎NOT NULL.",{"title":76,"body":77},"تشغيل الـ ‎stack والتحقق من ‎healthcheck","```bash\ndocker compose up -d --build\ndocker compose ps\n```\n\nانتظر حتى يصل ‎`db` و‎`redis` إلى حالة ‎`healthy` قبل أن يبدأ ‎`app`.",{"title":79,"body":80},"التحقق من الحالة باستخدام ‎octane:status","```bash\ndocker compose exec app php artisan octane:status\n```\n\nتعرض هذه الأمر الخادم النشط (‎frankenphp)، عدد العمال وحالتهم. استجابة ‎`running` تؤكد أن العمال يستجيبون.",{"title":82,"body":83},"إعادة تحميل العمال عند النشر","```bash\ndocker compose build app worker scheduler\ndocker compose up -d --no-deps app worker scheduler\n```\n\nلإعادة التحميل بدون قطع الاتصالات النشطة:\n\n```bash\ndocker compose exec app php artisan octane:reload\n```",{"type":36,"title":85,"body":86},"قائمة التحقق من التوافق قبل التبديل إلى الإنتاج","الانتقال إلى ‎Octane لا يتطلب إعادة كتابة التطبيق، لكن بعض الأنماط الشائعة تنكسر بصمت. راجع هذه القائمة على كودك قبل أول نشر.",{"type":40,"title":88,"items":89},"8 نقاط يجب التحقق منها",[90,91,92,93,94,95,96,97],"**‎Singletons ذات حالة قابلة للتغيير** — أي خدمة مسجلة بـ ‎`$this->app->singleton()` تخزن بيانات خاصة بالطلب يجب إعادة تهيئتها في ‎`OctaneServiceProvider`. مراجعة: ‎`grep -r 'singleton' app\u002FProviders`.","**الجلسات** — مع ‎`SESSION_DRIVER=redis` تصمد الجلسات بشكل صحيح. قد يُسبب برنامج التشغيل ‎`file` حالات تنافس مع عمال متعددين. الترحيل إلى ‎`redis` أو ‎`database` موصى به.","**اتصالات قاعدة البيانات** — يحتفظ ‎Octane باتصالات ‎DB دائمة لكل عامل. تحقق من أن ‎MySQL يقبل ‎`max_connections ≥ workers × replicas`.","**المتغيرات الثابتة في النماذج أو الخدمات** — ‎`static $cache = []` في نموذج ‎Eloquent يستمر بين الطلبات. استبدله بحقن التبعية بنطاق الطلب.","**مستمعو الأحداث غير الأكفاء** — مستمع مسجل في ‎`boot()` يُسجَّل مرة واحدة فقط، لكنه يُنفَّذ في كل طلب يُطلق الحدث. مشكلة فقط إذا كان يجمع حالة عامة.","**المهام والطوابير** — لا تعمل ‎Jobs في عملية ‎Octane الرئيسية بل في حاوية ‎`worker` منفصلة. لا تعديلات مطلوبة على كود ‎Jobs.","**الملفات المرفوعة والتخزين** — تأكد من تركيب مجلد ‎`\u002Fapp\u002Fstorage` كـ ‎volume لكي تستمر الملفات بين إعادة بناء الصورة.","**الحزم التابعة لجهات خارجية** — تحقق من توافق ‎Octane لكل حزمة تستخدمها. عطّل ‎Debugbar وTelescope في الإنتاج.",{"type":99,"title":100,"headers":101,"rows":106},"comparison","‎FrankenPHP مقابل ‎Swoole مقابل ‎RoadRunner: اختيار برنامج تشغيل ‎Octane",[102,103,104,105],"المعيار","FrankenPHP","Swoole","RoadRunner",[107,112,117,122,127],[108,109,110,111],"التثبيت","صورة ‎Docker رسمية ‎`dunglas\u002Ffrankenphp` — لا حاجة لتجميع امتداد ‎PECL","امتداد ‎PECL ‎`swoole` — يتطلب ‎`pecl install swoole` أو صورة مخصصة","ثنائي ‎Go منفصل (`roadrunner`) — يُنزَّل عبر ‎Composer",[113,114,115,116],"HTTP\u002F2 و‎HTTP\u002F3","أصلي — ‎FrankenPHP مبني على ‎Caddy الذي يدعم ‎HTTP\u002F3 (QUIC) تلقائياً","يدعم ‎HTTP\u002F2، ‎HTTP\u002F3 ليس أصلياً","‎HTTP\u002F2 عبر مكوّن إضافي، ‎HTTP\u002F3 غير مدعوم أصلياً",[118,119,120,121],"توافق امتدادات ‎PHP","واسع جداً — مبني على ‎PHP-FPM الرسمي، معظم الامتدادات تُثبَّت بشكل طبيعي","عدم توافق معروف مع بعض الامتدادات الحاجبة","واسع، لكن بعض امتدادات ‎PECL قد تحتاج تكيفات",[123,124,125,126],"توصية ‎Laravel الرسمية","برنامج التشغيل الموصى به منذ ‎Laravel 11 (2024)، مذكور أولاً في وثائق ‎Octane","برنامج التشغيل الأولي التاريخي، لا يزال مدعوماً","مدعوم، بديل لـ ‎Swoole، شائع في نظام ‎Symfony",[128,129,130,131],"تعقيد التشغيل","منخفض — حاوية واحدة، ‎Dockerfile بسيط، لا خادم منفصل","متوسط — يجب تجميع الامتداد مع نسخة ‎PHP الصحيحة","متوسط — يجب مزامنة ثنائي ‎RoadRunner مع نسخة حزمة ‎Composer",{"type":133,"title":134,"body":135},"tip","مراقبة ‎Octane في الإنتاج باستخدام ‎octane:status","تستعلم الأمر ‎`php artisan octane:status` عن خادم ‎FrankenPHP في الوقت الفعلي وتعرض عدد العمال النشطين والحالة الإجمالية. دمجها في المراقبة:\n\n```bash\ndocker compose exec -T app php artisan octane:status | grep -q 'running' && echo OK || echo FAIL\n```\n\nلإعادة تحميل العمال بدون قطع الاتصالات:\n\n```bash\ndocker compose exec app php artisan octane:reload\n```\n\nراقب ذاكرة ‎RSS للعملية الرئيسية: النمو المستمر يشير إلى تسريب. الأمر ‎`docker stats app` يعطي الذاكرة في الوقت الفعلي.",{"type":36,"title":137,"body":138},"استكشاف الأخطاء: أخطاء الإنتاج الشائعة","**تسريب ذاكرة تدريجي**: ذاكرة الحاوية ‎`app` تنمو باستمرار. السبب المحتمل: ‎singleton يجمع بيانات لكل طلب. قلل ‎`--max-requests` إلى 100 ريثما تحدد المصدر.\n\n**‎502 Bad Gateway من ‎Traefik**: تحقق من أن الحاوية على شبكة ‎`traefik`، وأن التسمية ‎`traefik.http.services.app.loadbalancer.server.port=8000` تطابق المنفذ المكشوف، وأن الحاوية في حالة ‎`healthy`.\n\n**عامل يُعيد التشغيل في حلقة**: ابحث عن ‎`FATAL` في ‎`docker compose logs app`. السبب الأكثر شيوعاً: ترحيل لم يُنفَّذ يرفع ‎`QueryException`.\n\n**جلسات مفقودة بين الطلبات**: انتقل إلى ‎`SESSION_DRIVER=redis`.\n\n**منطقة زمنية خاطئة**: أضف ‎`APP_TIMEZONE` في ‎`.env` و‎`RUN apk add --no-cache tzdata` في ‎Dockerfile.",{"type":36,"title":140,"body":141},"لمزيد من المعلومات","لديك الآن ‎stack عامل لـ ‎Laravel Octane على ‎VPS. المقالات التالية تغطي الخطوات التالية الطبيعية: [نشر ‎Laravel على ‎VPS](\u002Fblog\u002Fdeployer-laravel-vps)، [النشر مع ‎Traefik](\u002Fblog\u002Fdeployer-avec-traefik)، [قائمة فحص ‎Docker Compose للإنتاج](\u002Fblog\u002Fdocker-compose-production-checklist)، [استضافة ‎Redis على ‎VPS](\u002Fblog\u002Fheberger-redis-vps)، [نهاية عمر ‎PHP 8.2](\u002Fblog\u002Fphp-82-fin-de-vie-checklist-migration).","عرض خطط ‎VPS ServOrbit","\u002Fvps-cloud",[145,163,182,198,222],{"id":146,"slug":147,"slugs":148,"title":152,"excerpt":153,"readTime":23,"views":154,"isPinned":18,"noindex":18,"publishedAt":155,"updatedAt":156,"category":157,"categories":158,"featuredImage":30,"bgImage":31,"posterImage":160,"relatedSolution":161},5,"نشر-laravel-على-خادم-vps-دليل-الإنتاج",{"fr":149,"en":150,"ar":147,"es":151},"deployer-laravel-vps","deploying-laravel-on-a-vps-a-production-guide","desplegar-laravel-en-un-vps","نشر Laravel على خادم VPS: دليل الإنتاج","انقل Laravel إلى بيئة الإنتاج على خادم VPS: PHP وworkers والذاكرة المؤقتة وقاعدة البيانات وreverse proxy وHTTPS مُهيّأة بشكل نظيف.",1,"2026-02-09T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[159],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fdeployer-laravel-vps-poster.svg",{"categorySlug":27,"appSlug":162},"laravel-stack",{"id":164,"slug":165,"slugs":166,"title":170,"excerpt":171,"readTime":16,"views":172,"isPinned":18,"noindex":18,"publishedAt":173,"updatedAt":174,"category":175,"categories":179,"featuredImage":30,"bgImage":31,"posterImage":181,"relatedSolution":30},38,"انشر-تطبيقاتك-باستخدام-traefik-على-خادم-vps",{"fr":167,"en":168,"ar":165,"es":169},"deployer-avec-traefik","deploy-your-applications-with-traefik-on-a-vps","desplegar-con-traefik","انشر تطبيقاتك باستخدام Traefik على خادم VPS","انشر Traefik كوكيل عكسي على خادم VPS الخاص بك: توجيه تلقائي لحاويات Docker، وشهادات SSL من Let's Encrypt، وموازنة أحمال.",3,"2026-05-13T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":172,"name":176,"slug":177,"color":178,"icon":177},"النشر","deploiement","bg-success\u002F10 text-success",[180],{"id":172,"name":176,"slug":177,"color":178,"icon":177},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-traefik-poster.svg",{"id":183,"slug":184,"slugs":185,"title":189,"excerpt":190,"readTime":191,"views":154,"isPinned":18,"noindex":18,"publishedAt":192,"updatedAt":193,"category":194,"categories":195,"featuredImage":30,"bgImage":31,"posterImage":197,"relatedSolution":30},229,"docker-compose-في-الإنتاج-قائمة-التحقق-من-10-نقاط",{"fr":186,"en":187,"ar":184,"es":188},"docker-compose-production-checklist","docker-compose-in-production-10-point-checklist","checklist-docker-compose-en-produccion","Docker Compose في الإنتاج: قائمة التحقق من 10 نقاط","‏قائمة تحقق ‎Docker Compose‎ للإنتاج: 10 إعدادات، فحوصات صحية، أسرار، تراجع، استكشاف الأخطاء، والانتقال من ‎docker-compose v1‎ إلى ‎docker compose‎ على ‎Ubuntu 26.04‎.",12,"2026-08-06T00:00:00+00:00","2026-10-23T13:27:09+00:00",{"id":172,"name":176,"slug":177,"color":178,"icon":177},[196],{"id":172,"name":176,"slug":177,"color":178,"icon":177},"\u002Fblog\u002Fcovers\u002Fdocker-compose-production-checklist-poster.svg",{"id":199,"slug":200,"slugs":201,"title":205,"excerpt":206,"readTime":207,"views":17,"isPinned":18,"noindex":18,"publishedAt":208,"updatedAt":209,"category":210,"categories":216,"featuredImage":30,"bgImage":31,"posterImage":218,"relatedSolution":219},58,"استضافة-redis-على-خادم-vps",{"fr":202,"en":203,"ar":200,"es":204},"heberger-redis-vps","hosting-redis-on-a-vps","alojar-redis-en-un-vps","استضافة ‎Redis‎ على خادم ‎VPS‎: الدليل الشامل","انشر ‎Redis‎ على خادم ‎VPS‎ السحابي: متطلبات ‎RAM‎ و‎CPU‎، الأمان (‎ACL‎ و‎TLS‎)، استمرارية ‎RDB\u002FAOF‎، استكشاف الأخطاء والتوافر العالي.",10,"2026-04-23T00:00:00+00:00","2026-09-08T21:59:59+00:00",{"id":211,"name":212,"slug":213,"color":214,"icon":215},6,"قواعد البيانات","bases-de-donnees","bg-teal-500\u002F10 text-teal-400","database",[217],{"id":211,"name":212,"slug":213,"color":214,"icon":215},"\u002Fblog\u002Fcovers\u002Fheberger-redis-vps-poster.svg",{"categorySlug":220,"appSlug":221},"قواعد-البيانات","redis-stack",{"id":223,"slug":224,"slugs":225,"title":229,"excerpt":230,"readTime":16,"views":231,"isPinned":18,"noindex":18,"publishedAt":232,"updatedAt":233,"category":234,"categories":235,"featuredImage":30,"bgImage":31,"posterImage":237,"relatedSolution":30},206,"نهاية-دعم-php-82-دليل-الترحيل",{"fr":226,"en":227,"ar":224,"es":228},"php-82-fin-de-vie-checklist-migration","php-82-end-of-life-planning-your-migration","php-82-fin-de-vida-planificar-la-migracion","نهاية دعم PHP 8.2 : قائمة التحقق للترحيل","يبلغ PHP 8.2 نهاية دورة حياته في 31 ديسمبر 2026. جرد بيئاتك، قارن الإصدارات، واتبع قائمة تحقق مفصّلة للترحيل إلى PHP 8.3 أو 8.4.",7,"2026-08-01T00:00:00+00:00","2026-11-08T01:13:15+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[236],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fphp-82-fin-de-vie-checklist-migration-poster.svg",1794270341216]