2012-05-14 15 views
8

मुझे PHP के साथ खोले गए कुछ सॉकेट बनाए रखने और नियमित अंतराल पर उन सॉकेट को जांचने की आवश्यकता है। मैं PHP में सॉकेट के लिए नया हूँ; मैं इस तरह सॉकेट खोला:कैसे बताएं कि PHP में सॉकेट खुला है या नहीं?

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
socket_connect($socket, $ip, $port); 

सॉकेट एक राज्य है जहां वे गए संदेशों नहीं लौटते में प्राप्त कर सकते हैं में से कुछ; इन सॉकेट केवल संदेश प्राप्त करते हैं। यदि सॉकेट किसी संदेश का जवाब नहीं देता है तो मैं कैसे बता सकता हूं कि सॉकेट खोला गया है या नहीं?

+0

आपको सॉकेट को अलग करना चाहिए जो "खोला गया" उदा। ओएस उन वर्णनकर्ताओं के लिए संसाधन आवंटित करता है, और सॉकेट जो किसी अन्य सॉकेट से "कनेक्ट" होते हैं (उदाहरण के लिए दूरस्थ होस्ट पर सर्वर सॉकेट)। इस मामले में सवाल "... यदि एक सॉकेट कनेक्शन खोला गया है ..." मेरी राय में होना चाहिए। – excanoe

उत्तर

2

socket_sendto - एक सॉकेट के लिए एक संदेश भेजता है, यह जुड़ा हुआ है कि क्या है या आप socket_sendto इस्तेमाल कर सकते हैं जैसे और दूरस्थ होस्ट करने के लिए कुछ 'पिंग' डेटा भेजते हैं, तो वापसी का परीक्षण नहीं

लगता है यह निर्धारित करने के लिए कि सॉकेट अभी भी स्थापित है या नहीं।

+0

क्या आप इसे समझने में सक्षम थे? –

+0

सॉकेट से पढ़ने के लिए एक अवरुद्ध प्रयास के बारे में क्या? अगर यह जुड़ा हुआ है या नहीं तो उसे रिक्त या झूठा वापस करना चाहिए। मुझे लगता है कि एक चेतावनी भी उत्पन्न होगी लेकिन इसे अक्षम किया जा सकता है। – transilvlad

0

यह समारोह उपयोग करना बेहतर है: fsockopen()

पढ़ें यह: http://www.php.net/manual/en/function.fsockopen.php

या आप समारोह इस्तेमाल करने की कोशिश कर सकते हैं: socket_create_listen()

पढ़ें यह: http://www.php.net/manual/en/function.socket-create-listen.php

(यह सिर्फ प्रयोगात्मक है।)

और नियमित अंतराल पर जांच करने के लिए आप ई यह एक साधारण क्रॉन का उपयोग कर रहा है।

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