2013-11-23 5 views
6

मैं एक स्क्रिप्ट में रीडलाइन (टेक्स्ट यूआरएल) का उपयोग कर रहा हूं, जहां रीडलाइन (टेक्स्ट यूआरएल) को कई सौ बार कहा जाता है, जहां प्रत्येक टेक्स्ट यूआरएल अद्वितीय होता है।मैं आर में कनेक्शन को सही तरीके से कैसे बंद करूं, इसलिए इसका कनेक्शन 'स्लॉट' जारी हो जाता है?

पढ़ने के लिए लगभग 125 कॉल पढ़ने के बाद (टेक्स्ट यूआरएल) मुझे एक त्रुटि मिली, "सभी कनेक्शन उपयोग में हैं।"

जब मैं showConnections (सभी = TRUE) के साथ अपने खुले कनेक्शनों की जाँच, यूआरएल कनेक्शन मैं देख रहा हूँ के लिए:

description  class ... isopen 
"www.site.com" "url" ... "closed" ... 

मैं कैसे आर पर्यावरण से इन बंद कर दिया कनेक्शन निकालूं कि मैं नए कनेक्शन खोल सकता है?

इसके अलावा, मैंने हाथ से पहले यूआरएल खोलने, रीडलाइन में यूआरएल कनेक्शन पारित करने का प्रयास किया है, फिर कनेक्शन के साथ कनेक्शन के बाद कनेक्शन बंद कर दिया है, और फिर भी एक ही समस्या में चलाया गया है।

+4

में एक त्रुटि तब होती है, भले ही यदि आपके द्वारा लिखे गए 'उपयोग करने के लिए on.exit() जो यूआरएल सुनिश्चित करेगा बंद कर दिया जाता है? ShowConnections' आप समारोह' closeAllConnections' पाते हैं। क्या उससे मदद हुई? –

+0

मैंने अभी क्लोज़ऑलकनेक्शन की कोशिश की और यह मेरे आर दुभाषिया को दुर्घटनाग्रस्त कर दिया। आम तौर पर, मुझे यह एक व्यावहारिक समाधान नहीं लगता है क्योंकि मुझे कुछ गैर-यूआरएल कनेक्शन खोलने की आवश्यकता है। – user220419

+0

क्या आपने 'बंद' करने का प्रयास किया था? – Thomas

उत्तर

5

इस तरह की समस्याओं से बचने का सबसे आसान तरीका यह है कि जब आप इसके साथ काम करते हैं तो कनेक्शन को स्पष्ट रूप से बंद कर दें। आर में, कि सबसे आसान तरीका है अपने कोड

read_url <- function(url, ...) { 
    on.exit(close(url)) 
    readLines(url, ...) 
} 
showConnections() 
g <- read_url("http://www.google.com") 
showConnections() 
संबंधित मुद्दे