2011-11-11 6 views
6

PHP.net से:PHP - क्या कोई मेरे लिए pfsockopen फ़ंक्शन समझा सकता है? (लगातार सॉकेट)

http://www.php.net/manual/en/function.pfsockopen.php

मैं इस समारोह क्या सिद्ध का सार समझते हैं, लेकिन मैं अब भी स्पष्ट नहीं कर रहा हूँ कि क्या करने के लिए के रूप में यह पूरा होगा मैं यह करना चाहते हैं। यहां मेरा परिदृश्य है:

मेरे पास एक बड़ा PHP एप्लिकेशन है जिसका उपयोग कई उपयोगकर्ताओं द्वारा एक साथ किया जाता है। एप्लिकेशन के भीतर, मैं संदेशों को लॉग इन करने के लिए रिमोट सर्वर पर एक टीसीपी सॉकेट खोल रहा हूं, आदि ... यह मेरी आशा थी कि मैं pfsockopen का लाभ उठाने में सक्षम हो सकता हूं ताकि बहुत कम कनेक्शन खोले जाने की आवश्यकता हो। उदाहरण के लिए, सॉकेट में उपयोगकर्ता 1 संकेत खुलता है। उपयोगकर्ता 2 में साइन इन, कोई सॉकेट खोला नहीं गया है क्योंकि वह उपयोगकर्ता 1 द्वारा खोले सॉकेट पर "पिगबैक" कर सकता है।

क्या यह संभव है?

उत्तर

9

pfsockopen स्क्रिप्ट समाप्त होने पर सॉकेट को खुले रखेगा, जिससे इसे दूसरे से अनुरोध से फिर से उपयोग किया जा सकता है, जिससे आप अपेक्षाकृत कम कनेक्शन खोल सकते हैं। हालांकि, यह सभी एसएपीआई के साथ संगत नहीं है।

दृढ़ता प्रति-प्रक्रिया आधार पर होती है। इस प्रकार, pfsockopen एक सीएलआई एसएपीआई में भाग गया, प्रत्येक निष्पादन पर एक सॉकेट बंद कर देगा और फिर से खोल देगा, क्योंकि सीएलआई स्क्रिप्ट को एक ही प्रक्रिया में निष्पादित किया जाता है जो शुरू होता है, एक सॉकेट खोलता है और समाप्त होता है (प्रक्रिया के साथ सॉकेट बंद कर देता है)।

सीजीआई मोड में प्रति स्क्रिप्ट एक प्रक्रिया के साथ, यह भी सच है।

अपाचे एसएपीआई के साथ, यह निर्भर करता है कि किस प्रकार का बहु-प्रोसेसिंग मॉड्यूल (एमपीएम) उपयोग में है। mpm-prefork प्रत्येक अनुरोध पर एक नई प्रक्रिया को जन्म देता है, इसलिए यह संभवतः इसका समर्थन नहीं करता है। mpm-worker हालांकि, थ्रेड स्पॉन्स, इसलिए यह शायद वहां काम करेगा। mpm-winnt एक बहु-थ्रेडेड एमपीएम का एक विंडोज संस्करण है, इसलिए इसे भी काम करना चाहिए।

सबसे खराब यह हो सकता है कि कॉल को सामान्य fsockopen कॉल के रूप में निष्पादित किया जाएगा।

+2

pfsockopen प्रीफ़ोर एमपीएम के साथ काम करता है, हालांकि प्रत्येक बच्चे की प्रक्रिया में अपनी सतत सॉकेट होगी। –

संबंधित मुद्दे