Avatar ·

ما هو Long-Polling و WebSockets و SSE و Comet؟ كيف يمكن تنفيذها في PHP؟

أهلاً بالجميع! أنا مطور PHP مبتدئ وقد واجهت مؤخراً مهمة: أحتاج إلى إنشاء دردشة على الموقع بحيث تصل الرسائل دون إعادة تحميل الصفحة. أعرف عن AJAX، لكنه يتطلب إرسال طلبات باستمرار، وهذا غير فعال. بدأت بالبحث ووجدت مصطلحات: Long-Polling، WebSockets، Server-Sent Events (SSE) و Comet. بصراحة، أنا مرتبك. حتى الآن أفهم: Long-Polling هو عندما يرسل العميل طلباً ويبقيه الخادم مفتوحاً حتى تظهر رسالة جديدة. لكن كيف يمكن تطبيق ذلك في PHP؟ PHP هو خيط واحد ولا يمكنه البقاء معلقاً لفترة طويلة وإلا ستنهار الذاكرة. WebSockets هي اتصال دائم، لكني سمعت أن PHP ليس مناسباً جداً لذلك، بل يجب استخدام Node.js أو Go. أما SSE فهو شيء مثل تدفق بيانات من الخادم إلى العميل، لكنه يعمل باتجاه واحد فقط. Comet يبدو كشيء قديم. إليك مثال بسيط لاستعلام AJAX الذي أستخدمه حالياً (في PHP): ```php // poll.php $lastId = $_GET['last_id'] ?? 0; $m