आप इस परीक्षण करने के लिए होगा।
उदा।
$fd = pfsockopen('173.194.44.24', 80);
echo $fd;
हो जाएगा ताकि आउटपुट फ़ाइल वर्णनकर्ता की पहचान: Resource id #1
यह पृष्ठ खोलें कई बार एक वेब ब्राउज़र में और फिर से लोड - आप एक ही आईडी हर बार देखना चाहिए कि आप एक ही सॉकेट कनेक्शन का उपयोग कर रहे हैं ।
एक डिफ़ॉल्ट अपाचे prefork एम पी एम में - mod_php सेटअप आप शायद बेतरतीब ढंग से अलग काँटेदार प्रक्रियाओं जो n अलग आईडी में सबसे अधिक संभावना परिणाम को दोहराते रहते जाएगा के लिए भेजा जाता है, जबकि एन
- के अपने अपाचे विन्यास पर निर्भर करता है
MinSpareServers
(< = n pConnections)
MaxSpareServers
(> = n pConnections)
MaxRequestsPerChild
(Tmax)
जब आप MaxRequestsPerChild
तक पहुँचने के प्रोसेस को समाप्त कर और इस बच्चे पर लगातार कनेक्शन के रूप में अच्छी तरह से कर रहा है।
अपाचे वर्कर एमपीएम या किसी भी अन्य फास्टसी-सक्षम वेबसर्वर जैसे लाइटटैड या एनजिनक्स PHP-एफपीएम या PHP-cgi + fastcgi के साथ संयुक्त मैं एक ही व्यवहार की उम्मीद कर रहा हूं, अब वेबसर्वर के कारण नहीं बल्कि PHP प्रक्रियाओं के कारण।
समानांतर ऊपर दिए गए विवरण अपाचे जमाव के अनुसार, संबंधित सेटिंग्स
पीएचपी-एफ पी एम हैं
pm.min_spare_servers
(< = n pConnections)
pm.max_spare_servers
(> = n pConnections)
pm.max_requests
(टीएमएक्स)
FastCGI
PHP_FCGI_CHILDREN
(= n pConnections)
PHP_FCGI_MAX_REQUESTS
(Tmax)
सभी विन्यास में एक लगातार कनेक्शन की अधिकतम जीवन भर है कि द्वारा नियंत्रित अनुरोधों की राशि में (है प्रक्रिया) tMax
, समांतर निरंतर कनेक्शन की अधिकतम मात्रा n pConnections
(Php-CLI) कमांड लाइन पर इस अनुकरण
# php -a
Interactive shell # in a webserver environment this is the equivalent of one child
php > $fd1 = fsockopen('google.de', 80); # open non-persistent connection
php > echo $fd1 . "\n";
Resource id #1
php > $fd2 = fsockopen('google.de', 80); # open another one
php > echo $fd2 . "\n";
Resource id #2 # new fd, new connection
php > $pd1 = pfsockopen('google.de', 80); # persistent connection
php > echo $pd1 . "\n";
Resource id #3 # first persistent fd
php > $pd2 = pfsockopen('google.de', 80);
php > echo $pd2 . "\n";
Resource id #3 # uses the same connection
php > exit # simulating MaxRequestsPerChild threshold
# php -a
Interactive shell
php > $pd3 = pfsockopen('google.de', 80); # persistent connection, same host
php > echo $pd3 . "\n";
Resource id #1 # resource id reused because all old connections are gone
संपादित
acually मैं एक दूसरी सीमा उल्लेख करना भूल गया। पाठ्यक्रम के कनेक्शन सर्वर द्वारा किसी भी समय बंद किया जा सकता है। यह आपके द्वारा उपयोग की जा रही सर्वर सेटिंग्स और प्रोटोकॉल पर निर्भर करता है।
अधिकांश सर्वर n
चुप्पी के सेकंड के बाद कनेक्शन को बंद करते हैं और कुल कनेक्शन समय के x
सेकंड के बाद कनेक्शन बंद करते हैं।
pconnect
यह चुपचाप संभालता है, जब पुराना एक चला जाता है तो यह केवल एक नया कनेक्शन खुलता है।
फिर CLI पर इस अनुकरण:
# php -a
Interactive shell
php > $pd1 = pfsockopen('127.0.0.1', 80);
php > echo $pd1 . "\n";
Resource id #1
php > $pd1 = pfsockopen('127.0.0.1', 80);
php > echo $pd1 . "\n";
Resource id #1
(restarting my webserver on the another console /etc/init.d/nginx restart)
php > $pd1 = pfsockopen('127.0.0.1', 80);
php > echo $pd1 . "\n";
Resource id #2
तुम मुझे कल्पना आप क्या करते हैं मदद करने के लिए एक कोड उदाहरण प्रदान कर सकता है? –
आप अपनी बैंडविड्थ/मेमोरी की अनुमति दे सकते हैं, मुझे लगता है ... – crush
आप धागे के बीच सॉकेट कैसे साझा कर रहे हैं? pthreads? – glomad