هل من أحد إستخدم معلجة المهام الغير متزامنة ( Asynchronous Processing)

عند تطور الويب و تضخم البرمجيات جاءت الحاجة لمعالجة مهام خارج دورة http request and response و ذلك لعدة أشياء أهمها :

  • توجد عمليات تأخذ وقت كثير لكي تنفذ ( مثل إرسال بريد إلكتروني ، إنتاج ملف pdf على الخادم ... إلخ) .

  • إرسال بيانات بين نظامين مختلفين .

  • منظومة لتحليل تعاملات المستخدمين مع نظام محدد

  • ضع ما تراه مناسباً هنا

لكل هذه الاشياء وجدت طرق لمعالجة المهام الغير متزامنة .

  • فهل إستخدم أحدكم هذه الطريقة في أحد أنظمته التي يطورها ؟

  • و ما هي الادوات التي أستخدمت لتنفيذ هذه الالية ؟

  • و ما هي المهام التي إحتجتم لإستخدام هذه الالية لمعالجتها ؟


عملت على تطبيق يتطلب الإتصال بأكثر من خادم في المتوسط 100 خادم ومتوسط 10 طلبات لكل خادم.

هذه العملية بالطريقة العادية التتابعية تتطلب وقت كبير جداً، والمفترض تنفيذ هذه المهمة دورياً عبر cronjob

كان الحل عبر إستخدام الـthreads لتنفيذ أكثر من مهمة في نفس الوقت وعدم إنتظار تنفيذ المهام بالطريقة التتابعية، وعلى حسب إمكانيات الخادم الذي تستخدمه ستحدد أقصى عدد للمهام التي يتم تفيذها في نفس الوقت ويعتمد الأداء أيضاً على سرعة إتصال الخادم بالإنترنت في حال كان التطبيق يتعامل مع مصادر خارجية فتوزع السرعة على المهام.

لهذا الغرض إستخدمت مكتبة pthreads في لغة PHP وهذا موضوع بسيط عن كيفية عملها:

جزاك الله خيراً أخي ، بالنسبة للـ threads فهي مفيدة لزيادة أداء النظام ولكن هل تؤثر بشكل كبير على موارد النظام من ram , cpu ... إلخ ؟

كيف كانت تجربتك مع مكتبة pthreads بالنسبة لعملية التطوير ؟

  • بالطبع تؤثر على أداء النظام ولكن هذا الأمر نسبي على حسب مواصفات الخادم وعدد العمليات التي يتم تنفيذها في نفس الوقت ونسبة إستهلاك التطبيق ذاته من موارد النظام.

  • فليكن لدينا خادم بمعالج 3.0 جيجا هيرتز وذاكرة عشوائية 2 جيجا بايت ولدينا تطبيق يستهلك مقدار 0.5% من قدرة هذا المعالج ومقدار 0.7% من مقدار الذاكرة العشوائية ويتم تنفيذه في 1 ثانية فلو قمنا مثلاً بتنفيذ 100 عملية لهذا التطبيق فهذا يعني أننا نحتاج 100 ثانية بنفس معدل إستهلاك التطبيق للمعالج والذاكرة ولكن عندما نقوم بتنفيذ الـ 100 عملية عبر pthreads فهذا يعني إستهلاك 50% أي 1.5 جيجا هيرتز من قدرة هذا المعالج ونسبة 70% أي 1.4 جيجا بايت من مقدار الذاكرة العشوائية ويتم تنفيذ العمليات مجمعه في نفس الزمن اللازم لتنفيذ تطبيق واحد وهو 1 ثانية.

كيف كانت تجربتك مع مكتبة pthreads بالنسبة لعملية التطوير ؟

لا أعلم ما كنت سأفعل بدونها :)) وفرت وقت التنفيذ بشكل كبير جداً