2010-02-18 13 views
5

मैं कोल्डफ्यूज़न में डेटाबेस लोड स्क्रिप्ट लिख रहा हूं। यह एक दर्जन टेबलों में लगभग 150,000 रिकॉर्ड लोड करता है। मैं एक वेब ब्राउज़र अनुरोध के माध्यम से स्क्रिप्ट चला रहा हूँ। एक बार पृष्ठ से अनुरोध करने के बाद प्रक्रिया को मारने का कोई तरीका है? मैं ब्राउज़र में पेज को रोक सकता हूं, लेकिन स्क्रिप्ट पूरा होने तक डेटाबेस आवेषण बैकएंड पर जारी रहता है, जिससे डीबगिंग प्रक्रिया बहुत धीमी हो जाती है क्योंकि मुझे हर बार पूरी स्क्रिप्ट चलाने की ज़रूरत होती है। क्या जावा बैकएंड के माध्यम से मैं कुछ भी कर सकता हूं?कोल्डफ्यूज़न में चल रही प्रक्रिया को मार दें?

मैं जिस वातावरण में हूं वह आईआईएस के माध्यम से चल रहा है कोल्डफ्यूजन 8 है। मेरे पास प्रदर्शन निगरानी अक्षम है, लेकिन मैं प्रदर्शन मॉनीटर में नौकरियों को मारने की क्षमता की नकल करने में सक्षम होना चाहता हूं।

उत्तर

3

मैं यूनिक्स पिड-फ़ाइल की तरह कुछ करने की कोशिश करता हूं: आपकी स्क्रिप्ट समय-समय पर (शायद प्रत्येक 10/100/1000 पुनरावृत्तियों) फाइल सिस्टम में कुछ फ़ाइल की उपलब्धता की जांच करेगी और निष्पादित करना बंद कर दें यदि इसमें कुछ मूल्य है, या शायद अगर अस्तित्व में है या नहीं।

बेशक, यह डेटाबेस में एक क्षेत्र हो सकता है, आवेदन क्षेत्र में चर (उचित लॉकिंग रणनीति के साथ), या जो भी आप उपयुक्त पाते हैं।

आपको दूसरी स्क्रिप्ट की भी आवश्यकता है जो आपके "पिड ऑब्जेक्ट" की स्थिति को बदल देगा। यह एक और के रूप में सरल हो सकता है .cfm आप ब्राउज़र के साथ खींच सकते हैं।

+0

एक बहुत ही सरल समाधान। निम्नलिखित कोड ने मेरे लिए यह किया: ' ' – stomcavage

2

150,000 रिकॉर्ड के माध्यम से लूप में आप इसे जो भी सोचते हैं उस पर आप इसे रोक सकते हैं। एक काउंटर वैरिएबल सेट करें और जब भी यह लूप में <cfabort> या <cfbreak> पर मिलता है।

0

फ़्यूज़नरेक्टर जैसे कुछ उत्पादों के साथ, आप अंतर्निहित जावा थ्रेड को मार सकते हैं, लेकिन यदि डेटाबेस वास्तव में अनुरोध पर नियंत्रण रखता है, तो आप इसे रोक नहीं सकते (डेटाबेस पर)। आपको तब तक इंतजार करना होगा जब तक डेटाबेस थ्रेड के नियंत्रण को वापस न कर लेता है।

2

आप शायद cfthread का उपयोग कर प्रक्रिया को चलाने के लिए चाहते हैं।

अपनी प्रक्रिया शुरू की तरह ...

<cfthread name="myThread" action="run"> 
    ...Your loop to insert into database.... 
</cfthread> 

तो फिर तुम का उपयोग करके धागा को मार सकता है ...

<cfthread action="terminate" name="myThread"/> 
+0

यह सीएफ संसाधनों को मुक्त, सीएफ धागा मार सकते हैं, लेकिन जहां पर निर्भर करता है डेटाबेस है, यह अपने अंतिम निष्पादित आदेश को जारी रखना जारी रखेगा। मुझे पूरी तरह से यकीन नहीं है कि आंशिक डेटा के साथ क्या होगा, इस पर निर्भर करता है कि यह लेनदेन में कैसे लपेटा गया था// या किस प्रकार की लिंकिंग/लूपिंग चल रही थी। – williambq

1

आप प्रबंधन सॉफ्टवेयर इस तरह के FusionReactor स्थापित के रूप में, आप उपयोग कर सकते हैं कि है, तो चल रही स्क्रिप्ट को रोकने के लिए।

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