मैं एक ऐसी प्रणाली विकसित कर रहा हूं जो एक यूएसपीएस शिपिंग पैकेज के साथ इंटरफेस करता है जिसे डैज़ल कहा जाता है। इस प्रणाली के एक भाग में एक निगरानी डिमन शामिल है जिसका उद्देश्य टैब से अलग मूल्य फ़ाइलों को लेना है, उन्हें एक्सएमएल में बदलना है जो चमकदार पहचानता है, और उन्हें लेबल पीढ़ी के लिए चमकदार रूप से पास करता है। और यह हिस्सा बस ठीक काम करता है। मैं जो भी करना चाहता हूं, वह है, आउटपुट फ़ाइल को पार्स करना है जो Dazzle उत्पन्न करता है और इसे डेटाबेस में आयात करता है।मेरे लिनक्स डिमन को कैसे पता चलेगा कि एक विंडोज प्रोग्राम ने एक फाइल लिखना बंद कर दिया है जिसे मैं सैम्बा के माध्यम से एक्सेस करता हूं?
यहां ध्यान दें कि विंडोज़ पर चमकदार चलता है। मेरा निगरानी डिमन पर्ल में लिखा गया है और लिनक्स पर चलता है। मेरे लिनक्स सिस्टम में सांबा के माध्यम से डाज़ल की इनपुट और आउटपुट निर्देशिकाएं हैं।
डैज़ल आउटपुट फ़ाइल लिखने और उस समय समाप्त होने के बीच एक मापनीय देरी है। मैं क्या जानना चाहता हूं कि आउटपुट फ़ाइल लिखने के लिए मैं चमकदार के लिए कैसे इंतजार कर सकता हूं? मैंने फ़ाइल खोलने और flock($fh, LOCK_SH)
पर ऐसा करने का प्रयास किया है, लेकिन ऐसा कोई अच्छा प्रतीत नहीं होता है।
EDIT: मेरे पास नीचे "mobrule" की टिप्पणी के आधार पर एक विचार है। चमकदार एक्सएमएल में आउटपुट फाइल लिखता है। शिपमेंट में प्रत्येक पैकेज टैग में संलग्न है, और पूरा दस्तावेज़ एक टैग में संलग्न है। इसलिए, यदि मैं इसे पूरा करने से पहले फ़ाइल को पढ़ना शुरू करता हूं, तो मैं कार्रवाई करने से पहले उचित समापन टैग की प्रतीक्षा कर सकता हूं।
इसके अलावा, मुझे यह उल्लेख करना चाहिए कि मैं वर्तमान में क्या कर रहा हूं। जब मुझे पता चलता है कि आउटपुट एक्सएमएल फ़ाइल बनाई गई है, तो मैं इसे पार्स करने का प्रयास करता हूं। अगर वह पार्सिंग विफल हो जाती है, तो मैं सोता हूं और पुनः प्रयास करता हूं। अगर यह विफल रहता है, तो मैं दो बार सोता हूं, फिर कोशिश करें, और इसी तरह। इसने 64 सेकंड टाइमआउट के साथ परीक्षण में बहुत अच्छा काम किया है।
यह केवल तभी सही है जब Dazzle उसी लॉकिंग तंत्र का उपयोग करके फ़ाइल को लॉक कर रहा हो। यह संभावना नहीं है और विशेष रूप से असंभव है अगर Dazzle एक पर्ल स्क्रिप्ट नहीं है। – mob
यह एक अच्छा बिंदु है - डैज़ल एक विंडोज़ एप्लीकेशन है और पर्ल में लिखा नहीं है। इसलिए पर्ल में फ़ाइल लॉक केवल "सलाहकार" हैं, जो काम नहीं करेंगे। दयालुता, 'अन्यथा यह मैंने सुना है कि सबसे अच्छा समाधान है। –