السلام عليكم ورحمة الله تعالى وبركاته

وجدت كلاس مفيد جدا في github، يسهل عليك عمل Multithreading من خلال مكتبة cURL في لغة PHP..

هذا هو الكلاس :

https://github.com/petewarden/ParallelCurl/blob/master/parallelcurl.php

كيفية الإستخدام ؟

نقوم بحفظ الكلاس في ملف ما (ثم نقوم بتضمينه من خلال include) أو نضعه في داخل السكريبت مباشرة..

<?php
include "parallelcurl.php";

وبعدين نعمل مصفوفة نضع فيها الـ Options الخاصة بالـ cURL.

$curl_options = array (
    CURLOPT_SSL_VERIFYPEER => FALSE,
    CURLOPT_SSL_VERIFYHOST => FALSE,
    CURLOPT_USERAGENT      => 'Mozilla/5.0 (Windows NT 6.1; rv:30.0) Gecko/20100101 Firefox/30.0',
    CURLOPT_RETURNTRANSFER => 1
);

ثم نقوم بإنشاء كائن جديد من الكلاس ParallelCurl.. ونضع عدد الـThreads ثم المصفوفة التي فيها الـOptions تبع cURL.

$curl = new ParallelCurl (5, $curl_options); 

ثم نستدعي الدالة startRequest الموجودة داخل الكلاس، ونمرر لها الرابط (URL) وإسم الدالة التي يتم إستدعائها بعد نهاية كل Request.

 $curl->startRequest ("https://arabia.io/", 'on_request_done'); 

ثم نستدعي الدالة finishAllRequests والتي تقوم بالإنتظار لحين إنتهاء عمل كل الـThreads.

$curl->finishAllRequests ();

وأخير الدالة on_request_done والتي يتم إستدعائها بعد نهاية كل Request.

function on_request_done ($content, $url, $ch, $search) {
    echo $content;
}

لمشاهدة مثال عن السكريبت

https://github.com/petewarden/ParallelCurl/blob/master/parallelcurl.php