2010-04-14 13 views
11

मेरे पास एक स्क्रिप्ट है जो एक जैबर सर्वर को सुनती है और तदनुसार प्रतिक्रिया देती है। हालांकि इसे रोकना नहीं है, कल रात ने ऐसा किया था। अब मैं स्क्रिप्ट चल रहा है या नहीं, यह जांचने के लिए हर मिनट एक क्रॉन नौकरी चलाने के लिए चाहता हूं।जांचें कि कोई php स्क्रिप्ट अभी भी चल रही है

सवाल यह है कि, मैं कैसे जांचूं कि कोई विशेष स्क्रिप्ट चल रही है या नहीं?

कुछ समाधान here पोस्ट किए गए हैं, लेकिन वे सभी लिनक्स के लिए हैं, जबकि मैं विंडोज समाधान की तलाश में हूं। कोई विचार कृपया? धन्यवाद।

उत्तर

4

स्क्रिप्ट के लिए CURRENT_TIMESTAMP पर सेट दिनांक कॉलम के साथ डेटाबेस में एक पंक्ति को अद्यतन करने के लिए एक त्वरित और गंदे कामकाज हो सकता है। क्रॉन दूसरी स्क्रिप्ट जांच लें कि क्या इस पंक्ति का टाइमस्टैम्प हाल ही में है।

+0

है मैं एक अंतिम उपाय के रूप में है कि तरीके का उपयोग कर सकते हैं। क्या कोई विंडोज शैल स्क्रिप्ट है जो नौकरी करेगी? – Nirmal

+0

विंडोज शैल स्क्रिप्ट जेसीएल की तुलना में कम उपयोगकर्ता के अनुकूल हैं और यह कुछ कह रही है, इसलिए मुझे डर है कि मैं आपकी मदद नहीं कर सकता। आप PowerShell में देखने का प्रयास कर सकते हैं हालांकि यह उपयोगी प्रतीत होता है। – Danten

0

यहाँ क्या मैं आमतौर पर करते है:

  1. एक स्थिति निर्देशिका बनाने, जैसे:/डेटा/स्थिति/
  2. मेरी स्क्रिप्ट पर
  3. , यह जांच लें कि क्या स्थिति फ़ाइल है मौजूद है
    1. अगर यह मौजूद है, बाहर निकलने के स्क्रिप्ट
    2. यदि मौजूद नहीं, जारी रखने के लिए प्रक्रिया

हालांकि, इसमें कोई समस्या है: यदि स्क्रिप्ट मर जाती है और यह स्थिति फ़ाइल को नहीं हटाता है तो क्या होगा?

आप एक छोटे से बचाने के लिए इस तरह की जांच में जोड़ सकते हैं: 10 या 30 मिनट पहले (:

  1. हर मिनट, अद्यतन स्थिति फ़ाइल
  2. हर क्रॉन शुरुआत के लिए के लिए, तो देखें कि क्या स्थिति फ़ाइल अंतिम अपडेट जैसे है हम मान सकते हैं कि हमारी क्रॉन लिपि मर गई है) हम क्रॉन स्क्रिप्ट शुरू कर सकते हैं।
0

मैं एक ही समस्या थी और मैं इस कोड के साथ हल:

file_put_contents("status.txt","ping"); 

मैं

तो मेरी स्क्रिप्ट के पाश अंदर डाल दिया, मैं करने के लिए फ़ाइल की अंतिम संशोधित तिथि जाँच यदि स्क्रिप्ट सक्रिय है

ओवरलोड नहीं करने के लिए HD आप कुछ इस तरह कर सकते हैं:

$i++ 
if($i%100 == 0) 
    file_put_contents("status.txt","ping"); 

इस फाइल को लिखेंगे जब $ i == 100 या 200 या 300 आदि ...

यह एक वैकल्पिक हल

+0

डेटाबेस में टाइमस्टैम्प फ़ील्ड अपडेट करने से यह कैसे सक्षम है? मुझे लगता है कि डीबी अपडेट करना बेहतर है क्योंकि इसके पास लॉकिंग तंत्र हैं। अगर हम किसी फ़ाइल पर निर्भर करते हैं तो हम डेडलॉक में समाप्त हो सकते हैं। अगर मैं गलत हूं कृपया मुझे सही। – Nirmal

+0

मैंने अपनी नोटबुक पर कई स्क्रिप्ट चलाई हैं।मेरे डेस्कटॉप से ​​mysql तक पहुंचने के लिए मुझे PHP इंस्टॉल करना होगा। जब मैं केवल एक टेक्स्ट फ़ाइल के साथ काम करता हूं तो यह अनावश्यक हो जाता है। लेकिन, प्रत्येक मामले को अलग से इलाज किया जाना चाहिए। – Leo

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