2012-05-08 7 views
7

में पता लगाने उपयोगकर्ता रद्द/ग्राहक वियोग हाल ही में हम पता लगाने के लिए की जरूरत थी, जब एक ग्राहक गर्भपात/अचानक एक सर्वर से डिस्कनेक्ट हो गई। अचानक से मेरा मतलब है जरूरी नहीं कि एक ब्राउज़र की रोकें बटन के माध्यम से, वास्तव में, ग्राहक (का उपयोग कर soapUI), इसलिए, वियोग को रोकने के रूप में सरल हो सकता है पोस्ट के माध्यम से भेजा एक सोप संदेश (था Ctrl + C) क्लाइंट ने इसे प्रतिक्रिया प्राप्त करने से पहले। हमने समाधान खोजने की कोशिश करने में कई दिन बिताए, जब तक हमें पता चला कि कैसे। तो, यह शायद एक निहित प्रतिक्रिया के साथ एक प्रश्न हो सकता है, लेकिन लक्ष्य जानकारी प्रदान करना है जो एक ही ज़रूरत के साथ कई अन्य लोगों की मदद कर सकता है।पीएचपी

यहाँ बुनियादी कोड हम ग्राहक की वियोग का पता लगाने के लिए हमारे सर्वर का इस्तेमाल किया है:

<?PHP 
ignore_user_abort(true);   // Continue running the script even when the client aborts/disconnects 

sleep(5);       // Sleep 5 seconds so we can stop the client before it recieves a reponse from the server 

echo "RESPONSE sent to the client"; // Response to the Request 
ob_flush();       // Clean output buffer 
flush();       // Clean PHP's output buffer 
usleep(500000);      // Sleep half a second in order to detect if Apache's server sent the Response 
echo " ";       // Echo a blank space to see if it could be sent to the client 
ob_flush();       // Clean output buffer 
flush();       // Clean PHP's output buffer 

if(connection_status() != 0) {  // Client aborted/disconnected abruptly 
    return -1; 
} 
else {        // Client recieved the response correctly 
    return 0; 
} 

?> 
+2

हैंडी, लेकिन यह एक प्रश्नोत्तर साइट है, न कि जमीन पर डंपिंग युक्तियाँ। –

+7

@MarcB [अपने प्रश्न पूछना और जवाब देना ठीक है] (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/)। @ नॉरबर्टो: आपको प्रश्न में समाधान शामिल नहीं करना चाहिए, लेकिन इसे उत्तर के रूप में पोस्ट करना चाहिए। – lortabac

+0

मेरे लिए यह केवल php दस्तावेज़ के लिए एक अनावश्यक दस्तावेज है। इसके अतिरिक्त आपके प्रश्न का उत्तर बस "कनेक्शन_स्टैटस() फ़ंक्शन का परिणाम देखें"। – mosch

उत्तर

1

PHP में "connection_aborted" समारोह आपकी समस्या का समाधान होगा।

आप इस link में उदाहरण उपयोग के साथ फ़ंक्शन सिंटैक्स देख सकते हैं।