الدالة المنشئة __construct

الشرح:

Worker::__construct([string $listen , array $context])

يقوم بتهيئة نموذج عامل (Worker)، الذي يمكن أن يحتوي على خصائص وواجهات اتصال مرسومة لمهام معينة.

البارامترات

$listen (اختياري، عدم ملء الباراميتر يعني عدم الاستماع على أي منفذ)

في حال تم تحديد باراميتر $listen، سيتم الاستماع على المنفذ.

تنسيق $listen هو <البروتوكول>://<عنوان الاستماع>

<البروتوكول> يمكن أن يكون في الصيغة الآتية:

tcp: مثال tcp://0.0.0.0:8686

udp: مثال udp://0.0.0.0:8686

unix: مثال unix:///tmp/my_file (تتطلب Workerman>=3.2.7)

http: مثال http://0.0.0.0:80

websocket: مثال websocket://0.0.0.0:8686

text: مثال text://0.0.0.0:8686 (text هو بروتوكول النص المدمج في Workerman، متوافق مع telnet، للتفاصيل راجع مرفق بروتوكول النص)

بالإضافة إلى ذلك فهناك بروتوكولات مخصصة، انظر قسم الدليل الخاص بتخصيص بروتوكول الاتصال في هذا الدليل.

<عنوان الاستماع> يمكن أن يكون في الصيغة الآتية:

إذا كان الاتصال عبر نوع من مقابس النظام الملفات المحلية، فإن العنوان سيكون مسار النظام الملفي المحلي.

إذا كان الاتصال عبر نوع غير مقبس النظام الملفات، فإن صيغة العنوان ستكون <آي بي الجهاز الخاص>:<رقم البوابة>

<آي بي الجهاز الخاص> يمكن أن يكون 0.0.0.0 ويعني الاستماع على كل بطاقات الشبكة الخاصة بهذا الجهاز، بما في ذلك العناوين الداخلية والعناوين الخارجية والحلقة المحلية 127.0.0.1

<آي بي الجهاز الخاص> إذا كان 127.0.0.1 فإنه يعني الاستماع على الحلقة المحلية فقط مما يعني أنه يمكن للجهاز نفسه الوصول إلى الخدمة ولا يمكن للأجهزة الخارجية الوصول إليها.

<آي بي الجهاز الخاص> إذا كانت عنوان الشبكة الداخلية، مثل 192.168.xx.xx، فإنه يعني الاستماع على العنوان الداخلي فقط، الأجهزة الخارجية لن تتمكن من الوصول إلى الخدمة.

إذا كان <آي بي الجهاز الخاص> غير صالح لنفس الجهاز فإنه لن يتمكن من الاستماع، وسيتم عرض خطأ "Cannot assign requested address"

ملاحظة:<رقم البوابة> لا يمكن أن يكون أكبر من 65535، وإذا كان أقل من 1024 فإنه يتطلب صلاحيات root للاتصال. يجب أن تكون البوابة المستمع عليها شاغرة على الجهاز المحلي، إذا كانت مشغولة فلن يتمكن من الاستماع وسيتم عرض خطأ "Address already in use"

$context

مصفوفة تستخدم لتمرير خيارات السياق لقناة الاتصال، انظر خيارات سياق المقبس

مثال

Worker كونتينر كمستمع لطلبات HTTP

use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';

$worker = new Worker('http://0.0.0.0:8686');

$worker->onMessage = function(TcpConnection $connection, Request $request)
{
    $connection->send("hello");
};

// تشغيل العامل
Worker::runAll();