PHP Academy · درس

Fibers: التزامن التعاوني

أوقفوا تنفيذ PHP مؤقتًا واستأنفوه باستخدام Fibers لإنشاء أنماط شبيهة بالبرمجة غير المتزامنة

الدرس 4 من 413 خطوة

Fibers: التزامن التعاوني درس مجاني في PHP Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في PHP Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة PHP Academy 4 دروس في المجموع.

ما هي Fibers؟

قدّمت PHP 8.1 Fibers، وهي إجراءات تعاونية خفيفة الوزن يمكنها إيقاف التنفيذ عند نقطة محددة ثم استئنافه لاحقًا، ما يتيح تعدد المهام التعاوني.

Fiber مقابل التنفيذ غير المتزامن

ليست Fibers خيوطًا متوازية، إذ تظل PHP أحادية الخيط. وتتيح Fibers لسياق تنفيذ واحد تسليم التحكم طوعًا إلى سياق تنفيذ آخر، ما يتيح أنماطًا شبيهة بالتنفيذ غير المتزامن.

إنشاء Fiber

أنشئ Fiber بتمرير دالة قابلة للاستدعاء إلى المُنشئ. لا يبدأ Fiber حتى تستدعي start().

<?php
$fiber = new Fiber(function (): void {
    echo "Fiber started\n";
    $value = Fiber::suspend("first suspension");
    echo "Resumed with: $value\n";
});

بدء Fiber وتعليقه

تشغّل start() Fiber حتى يصل إلى أول Fiber::suspend(). وتُعاد القيمة الممررة إلى suspend() من start().

<?php
$suspended = $fiber->start(); // runs until suspend()
echo $suspended; // "first suspension"

استئناف Fiber

تتابع resume($value) تنفيذ Fiber من الموضع الذي عُلّق فيه. وتُعاد القيمة الممررة إلى resume() من Fiber::suspend() داخل Fiber.

<?php
$fiber->resume("hello from main");
// Inside fiber: $value = "hello from main"
// Prints: "Resumed with: hello from main"

مثال كامل على Fiber

دورة حياة كاملة لـ Fiber: الإنشاء، والبدء، والتعليق، والاستئناف، والإنهاء.

<?php
$fiber = new Fiber(function (): string {
    $x = Fiber::suspend("paused");
    return "Fiber done, received: $x";
});

$msg = $fiber->start();   // "paused"
$fiber->resume("hi!");
echo $fiber->getReturn(); // "Fiber done, received: hi!"

أساليب حالة Fiber

تحقّق من حالة Fiber باستخدام: isStarted() وisSuspended() وisRunning() وisTerminated().

<?php
var_dump($fiber->isTerminated()); // true after getReturn()

معالجة الأخطاء في Fibers

ألقِ استثناءً داخل Fiber باستخدام $fiber->throw(new Exception(...)). يظهر الاستثناء عند نقطة Fiber::suspend() داخل Fiber.

التكامل مع حلقة الأحداث

صُممت Fibers لتشغيل حلقات الأحداث مثل ReactPHP وRevolt، حيث تُعلّق استدعاءات I/O أثناء الانتظار، ثم تُستأنف عند وصول البيانات.

Fibers مقارنةً بـ Generators

تتوقف Generators مؤقتًا باستخدام yield أيضًا، بدءًا من PHP 5.5، لكنها تُستخدم أساسًا للتكرار الكسول. أما Fibers فهي آلية coroutine أكثر عمومية، تتيح تمرير القيم في الاتجاهين وإرجاع القيم.

حالات الاستخدام العملية

تُستخدم Fibers لتشغيل عملاء HTTP غير حاجبين في Revolt، واستعلامات قواعد البيانات غير المتزامنة، وجدولة المهام التعاونية، وخطوط معالجة البيانات المتدفقة، من دون تعقيد تعدد الخيوط.

الملخص

تتيح Fibers إيقاف سياق تنفيذ واحد في PHP مؤقتًا ثم استئنافه، مما يوفّر التزامن التعاوني. وهي تدعم أطر العمل الحديثة غير المتزامنة في PHP. تنقل Fiber::suspend() التحكم، بينما تستعيده resume().

تحقّق سريع

كيف تمرّر قيمة إلى Fiber معلّق؟

البدء مجانًا

تعلم PHP مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
49
الدروس
195

الأسئلة الشائعة

هل درس «Fibers: التزامن التعاوني» مجاني؟

نعم — نص درس «Fibers: التزامن التعاوني» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة PHP Academy، انتقل إلى CoddyKit PRO. تتضمن دورة PHP Academy 4 دروس في المجموع.

ماذا ستتعلم في «Fibers: التزامن التعاوني»؟

أوقفوا تنفيذ PHP مؤقتًا واستأنفوه باستخدام Fibers لإنشاء أنماط شبيهة بالبرمجة غير المتزامنة تتمرن على PHP Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ PHP Academy؟

لا تُشترط خبرة سابقة. PHP Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «Fibers: التزامن التعاوني»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس PHP Academy هذا؟

نعم. كل درس في PHP Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تعبير Match والمعاملات المسمّاة
  2. المعامل Nullsafe وأنواع الاتحاد
  3. التعدادات (Enums)
  4. Fibers: التزامن التعاوني
← العودة إلى PHP Academy