وكيل HTTP/FastCGI/SCGI لا تغلق الاتصال عند العميل قطع - علة أو الميزة ؟

StackOverflow https://stackoverflow.com/questions/1354690

سؤال

أنا أعمل على المذنب الدعم بالنسبة CppCMS الإطار عبر طويلة مدعوم استطلاعات الرأي.في العديد من الحالات مثل هذا الطلب مغلق من قبل العميل قبل أي استجابة من ملقم أعطيت -- على سبيل المثال الصفحة مغلقة ، ينتقل المستخدم إلى صفحة أخرى أو أنها مجرد refeshed.

في جانب الملقم أتوقع أنني قد تلقي إخطارا هذا الصدد هو إسقاط.أنا اختبرت التطبيق عبر 3 موصلات:FastCGI, SCGI وبسيطة وكيل HTTP.

من 3 الرئيسية UNIX ملقمات ويب ، Apache2 ، lighttpd و Nginx الأخير فقط قد أغلقت اتصال كما هو متوقع يسمح تطبيق إزالة طلب من الانتظار في طابور -- هذا عملت كل FastCGI و وكيل HTTP الموصلات.(Nginx لا scgi الوحدة بشكل افتراضي).

الآخرين, Apache و Lighttpd لا تغلق اتصال أو إعلام الخلفية عن قطع العملاء المضي قدما كما لو كان العميل لا يزال على الخط.يحدث هذا للجميع 3 دعم واجهات برمجة التطبيقات:FastCGI, SCGI و وكيل HTTP.

كنت قد فتحت قضية Lighttpd, لكن ما أكثر conserns لي هو حقيقة أن اباتشي -- ناضجة وكذلك دعم خادم الويب كما lighttpd ولا يكشف الخلفية الخادم أن العميل كان قد ذهب.

الأسئلة:

  1. هل هذا خطأ أو هذا هو الميزة ؟ هل هناك أي سبب لعدم إغلاق الاتصال بين خادم الويب و تطبيق الخلفية ؟
  2. هل هناك حياة حقيقية المذنب تطبيق يعمل من وراء هذه الملقمات عبر FastCGI/SCGI/HTTP-وكيل الخلفيات?
  3. إذا كان ما سبق صحيحا ، كيف يتعاملون مع هذه المسألة ؟ أنا أفهم أن أنا يمكن أن مهلة جميع اتصالات كل 10 ثوان ، ولكن أود أن تبقي لهم الخمول بقدر العميل يستمع -- لأن هذا يسمح أسهل نطاق -- كل اتصال هو رخص جدا -- التكلفة فقط opended مأخذ.

وذلك بفضل!

هل كانت مفيدة؟

المحلول

(1) ميزة.أو أكثر تحديدا من تداعيات تنفيذ التفاصيل.

اتصال TCP/IP لا تنطوي على تدفق مستمر من حركة المرور ذهابا وإيابا.وبالتالي لا يوجد طريقة لمعرفة أن العميل هو ذهب دون (أ) العميل أقول لك هو إغلاق اتصال أو (ب) مهلة.

(2) أنا لست على وجه التحديد على دراية المذنب أو CppCMS.ولكن, نعم, هناك كل أنواع CMS خوادم يركض وراء ذكر خوادم الويب و أنهم جميعا لديهم للتعامل مع هذه القضية (و, نعم, هذا هو الألم).

(3) مهلة هي السبيل الوحيد, ولكن يمكنك تخفيف الألم ، إذا جاز التعبير.يكون العميل ping الملقم عبر اتصال كل ن ثانية عندما يكون هناك خلاف ذلك أي نشاط.لا يجب أن تفعل أي شيء يمكنك أن تك الاشياء على الرد ؛ الإخطارات المتزامنة التعديلات أو كل ما تحتاجه.

أنت محق في أنه من المستغرب أن mod_fastcgi لا أقول الخلفية التي أباتشي وقد تم الكشف عن قطع الاتصال أو الاتصال مهلة.وأنت لست أول من فزع.

الثاني التصحيح في هذه الصفحة يجب إصلاح هذه المسألة بالذات:

http://osdir.com/ml/web.fastcgi.devel/2006-02/msg00015.html

نصائح أخرى

http://ncannasse.fr/blog/tora_comet

ليس لدي أي معلومات ملموسة بالنسبة لك, ولكن هذه المادة لا أذكر أنها يمكن الكشف عن عندما يكون العميل قد قطع من طراز أباتشي.انظر tora.Queue.و يبدو أن المصدر هو متاح في نيكو السير الذاتية, لذلك قد تكون قادرة على العثور على بعض القرائن هناك.حظا سعيدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top