"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > استكشاف التزامن والتوازي في PHP: برامج تعليمية ونصائح عملية

استكشاف التزامن والتوازي في PHP: برامج تعليمية ونصائح عملية

تم النشر بتاريخ 2024-11-03
تصفح:910

Exploring Concurrency and Parallelism in PHP: Hands-On Tutorials and Tips

يعد فهم التزامن والتوازي أمرًا بالغ الأهمية لكتابة تطبيقات PHP فعالة، خاصة عند التعامل مع مهام أو عمليات متعددة تحتاج إلى التعامل معها في وقت واحد. فيما يلي دليل خطوة بخطوة لفهم التزامن والتوازي وتنفيذهما في لغة PHP، مع أمثلة وأوصاف عملية.

1. التزامن مقابل التوازي

  • التزامن: يشير إلى قدرة النظام على التعامل مع مهام متعددة في وقت واحد عن طريق تشذير تنفيذها. وهذا لا يعني بالضرورة أن المهام يتم تنفيذها في نفس الوقت، بل يعني فقط أنها تتم إدارتها بحيث تبدو وكأنها تتقدم في وقت واحد.

  • التوازي: يتضمن تنفيذ مهام متعددة في نفس الوقت، مع الاستفادة من معالجات أو نوى متعددة. هذه مجموعة فرعية من التزامن حيث يتم تشغيل المهام بشكل متوازٍ.

2. التزامن في PHP

PHP تقليديًا أحادي الترابط، مما يعني أنه يتعامل مع مهمة واحدة في كل مرة. ومع ذلك، لا يزال من الممكن تحقيق التزامن من خلال تقنيات مثل المعالجة غير المتزامنة واستخدام الأدوات الخارجية.

2.1. استخدام pcntl_fork للتزامن

يسمح ملحق pcntl (التحكم في العمليات) في PHP بالتحكم في العمليات ويمكن استخدامه لتحقيق التزامن عن طريق تفرع العمليات.

المتطلبات الأساسية:

  • تأكد من تمكين ملحق pcntl في تثبيت PHP الخاص بك.

مثال:

توضيح:

  • يقوم pcntl_fork() بإنشاء عملية جديدة.
  • يتم تشغيل العملية الأصلية والعملية الفرعية بشكل متزامن.
  • تنتظر العملية الأصلية حتى تكتمل العملية الفرعية باستخدام pcntl_wait().

2.2. المعالجة غير المتزامنة باستخدام ReactPHP

ReactPHP هي مكتبة للبرمجة القائمة على الأحداث في PHP، مما يسمح بعمليات غير متزامنة.

تثبيت:

composer require react/event-loop

مثال:

run();
?>

توضيح:

  • يتيح ReactPHP تنفيذ المهام غير المتزامنة.
  • تعمل المهام بشكل متزامن، مع إدارة حلقة الأحداث لتنفيذها.

3. التوازي في PHP

يتضمن التوازي تنفيذ مهام متعددة في وقت واحد. في PHP، يمكن تحقيق ذلك باستخدام الأدوات والمكتبات المصممة للمعالجة المتوازية.

3.1. استخدام الامتداد المتوازي

يسمح الامتداد الموازي بالمعالجة المتوازية في لغة PHP من خلال تمكين تعدد الخيوط.

تثبيت:

  • قم بتثبيت الامتداد الموازي باستخدام PECL أو تجميعه من المصدر.

مثال:

run(function() {
    task('1');
});
$future2 = $runtime2->run(function() {
    task('2');
});

// Wait for tasks to complete
$future1->value();
$future2->value();
?>

توضيح:

  • يتيح التوازي إنشاء بيئات تشغيل متعددة.
  • تعمل المهام بالتوازي عبر سلاسل مختلفة.

3.2. استخدام ملحق pthreads

يسمح ملحق pthreads لبرامج PHP النصية بإنشاء المواضيع وقراءتها والكتابة فيها.

تثبيت:

  • قم بتثبيت ملحق pthreads باستخدام PECL.

مثال:

name = $name;
    }

    public function run() {
        echo "Thread {$this->name} started\n";
        sleep(2); // Simulate a task
        echo "Thread {$this->name} completed\n";
    }
}

$worker1 = new Worker('1');
$worker2 = new Worker('2');

// Start threads
$worker1->start();
$worker2->start();

// Join threads to main script
$worker1->join();
$worker2->join();
?>

توضيح:

  • يوفر pthreads دعمًا للخيوط.
  • تقوم سلاسل العمليات بتشغيل المهام بالتوازي، باستخدام نوى وحدة المعالجة المركزية المتعددة.

4. خاتمة

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

لا تتردد في تعديل هذه الأمثلة بناءً على حالة الاستخدام المحددة وبيئة PHP.

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/mdarifulhaque/exploring-concurrency-and-parallelism-in-php-hands-on-tutorials-and-tips-2kc6?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ Study_golang @163.com حذف
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3