php - ما هي الاستطلاعات الطويلة ، Websockets ، أحداث إرسال Server(SSE) و Comet؟




long-polling server-sent-events (2)

لقد حاولت قراءة بعض المقالات ، لكنني لست واضحا في المفاهيم حتى الآن.

هل يرغب أحد الأشخاص في التقاط صورة توضح لي ما هي هذه التقنيات:

  1. الاقتراع طويل
  2. أحداث الخادم المرسلة
  3. مآخذ الويب
  4. المذنب

شيء واحد صادفته في كل مرة كان ، الخادم يحتفظ بالاتصال مفتوحًا ويدفع البيانات إلى العميل. كيف تم فتح الاتصال ، وكيف يحصل العميل على البيانات المدفوعة؟ (كيف يستخدم العميل البيانات ، وربما يساعد بعض التعليمات البرمجية؟)

والآن ، أي واحد منهم يجب أن أستخدمه لتطبيق في الوقت الفعلي. لقد سمعت الكثير عن websockets (مع socket.io [مكتبة node.js]) ولكن لماذا لا PHP؟


لقد بذلت Tieme الكثير من الجهد في إجابته الممتازة ، ولكن أعتقد أن جوهر سؤال العمليات هو كيفية ارتباط هذه التقنيات بـ PHP بدلاً من كيفية عمل كل تقنية.

PHP هي اللغة الأكثر استخدامًا في تطوير الويب إلى جانب جانب العميل الواضح html و css و javascript. ومع ذلك ، فإن PHP لديها قضيتان رئيسيتان عندما يتعلق الأمر بالتطبيقات في الوقت الفعلي:

1) بدأت PHP باعتبارها CGI الأساسية للغاية. لقد تقدمت PHP إلى حد بعيد منذ أن كانت في مرحلة مبكرة ، ولكنها حدثت بخطوات صغيرة. كان لدى PHP العديد من الملايين من المستخدمين في الوقت الذي أصبحت فيه مكتبة C المضمنة والمرنة التي هي اليوم ، ومعظمهم كانوا يعتمدون على نموذج التنفيذ السابق ، لذلك لم يقم بعد بمحاولة صلبة للهروب من نموذج cgi داخليًا. حتى واجهة سطر الأوامر تستدعي مكتبة PHP (libphp5.so على لينكس ، php5ts.dll على النوافذ ، وما إلى ذلك) كما لو أنها لا تزال معالجة طلب GET / POST. ما زال ينفذ الكود كما لو أنه يجب عليه بناء "صفحة" ثم إنهاء دورة حياته. ونتيجة لذلك ، لا يتوفر سوى دعم ضئيل للغاية للبرامج متعددة الخيوط أو التي تستند إلى الأحداث (داخل مساحة PHP) ، مما يجعلها غير عملية حاليًا لتطبيقات متعددة المستخدمين في الوقت الفعلي.

لاحظ أن PHP لديها امتدادات لتوفير حلقات الأحداث (مثل libevent) و مؤشرات الترابط (مثل pthreads) في مساحة PHP ، ولكن القليل جدا جدا من التطبيقات يستخدم هذه.

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

ستكون PHP 7 خطوة رائعة لإصلاح هذه المشكلات أيضًا ، ويبدو أنها واعدة جدًا كمنصة للتطبيقات في الوقت الفعلي.






server-sent-events