2011-09-10 16 views
9

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

  • है, तो कुछ भी नहीं होगा: मैं एक PHP स्क्रिप्ट है कि निम्नलिखित परिणामों के साथ रूटर से एक पिंग भेजता है हर 5 मिनट में लिखना चाहते हैं।
  • पिंग विफल रहता है, तो यह कुछ ही मिनटों के इंतजार कर रहा है, और यह एक बार मेरे ई-मेल एड्रेस के लिए एक चेतावनी भेजता है, तो यह अभी भी विफल रहता है।
  • राउटर फिर से पिंग करने योग्य होने के बाद यह एक ई-मेल भेजता है जो ठीक है।

इस पीएचपी के साथ किया जा सकता है? कैसे? क्या किसी के पास छोटा PHP फ़ाइल है जो यह करता है?

+0

का उपयोग नहीं कर सकते हैं एक क्रॉन जॉब बेहतर ध्वनि? – ajreal

उत्तर

9

नीचे मैं एक सरल PHP स्क्रिप्ट लिखा है करता है कि आप क्या पूछना। यह एक सर्वर को पिंग करता है, परिणाम को एक टेक्स्ट फ़ाइल ("अप" या "डाउन") पर लॉग करता है, और पिछले परिणाम ऊपर या नीचे निर्भर करता है कि एक ईमेल भेजता है।

यह हर पाँच मिनट चलाने के लिए प्राप्त करने के लिए, आप एक क्रॉन जॉब कॉन्फ़िगर करने के लिए PHP स्क्रिप्ट हर पाँच मिनट कॉल करने की आवश्यकता होगी। (कई साझा वेब होस्ट आप क्रॉन नौकरियों स्थापित करने के लिए अनुमति देते हैं;। अपने होस्टिंग प्रदाता के दस्तावेज़ देखें कैसे पता लगाने के लिए)

<?php 

//Config information 
$email = "[email protected]"; 
$server = "google.com"; //the address to test, without the "http://" 
$port = "80"; 


//Create a text file to store the result of the ping for comparison 
$db = "pingdata.txt"; 

if (file_exists($db)): 
    $previous_status = file_get_contents($db, true); 
else: 
    file_put_contents($db, "up"); 
    $previous_status = "up"; 
endif; 

//Ping the server and check if it's up 
$current_status = ping($server, $port, 10); 

//If it's down, log it and/or email the owner 
if ($current_status == "down"): 

    echo "Server is down! "; 
    file_put_contents($db, "down"); 

    if ($previous_status == "down"): 
     mail($email, "Server is down", "Your server is down."); 
     echo "Email sent.";  
    endif; 

else: 

    echo "Server is up! "; 
    file_put_contents($db, "up"); 

    if ($previous_status == "down"): 
     mail($email, "Server is up", "Your server is back up."); 
     echo "Email sent."; 
    endif; 

endif; 


function ping($host, $port, $timeout) 
{ 
    $tB = microtime(true); 
    $fP = fSockOpen($host, $port, $errno, $errstr, $timeout); 
    if (!$fP) { return "down"; } 
    $tA = microtime(true); 
    return round((($tA - $tB) * 1000), 0)." ms"; 
} 
+0

PHP में कोई मूल पिंग समारोह नहीं है, इसलिए http://stackoverflow.com/questions/1239068/ping-site-and-return-result-in-php पर एक नजर है आप इस स्क्रिप्ट का उपयोग करने का प्रयास करता है, तो ... या निश्चित रूप से एक निगरानी प्रणाली का उपयोग करें जैसे http://www.nagios.org/ – CodeReaper

+2

@CodeReaper स्क्रिप्ट में पहले से ही पिंग फ़ंक्शन शामिल है। खराब द्वारा – Nick

+0

, मेरे आईपैड पर सर्फिंग कर रहा था और कोशिश करने और नीचे स्क्रॉल करने के लिए नहीं सोचा था। – CodeReaper

3

मैं व्यक्तिगत रूप से Pingdom सेवा का उपयोग करता है, तो यह इंटरनेट से कॉल किये जाने के कर सकते हैं और एक HTTP चल रहा है उस पर सर्वर एक विशेष लिपि लिखने में गहरी जाने की जरूरत नहीं है।

+1

50+ वेबसाइटों की निगरानी करने की कोशिश करते समय महंगा हो सकता है। –

0

साथ ही तक मुझे पता है आप PHP के साथ एक cronjob नहीं बना सकते हैं, लेकिन आप क्या कर सकते उपयोग crontab है

और this ताकि आप आवश्यक होस्ट करने के लिए पिंग करने में सक्षम हो जाएगा भी आप के बजाय

चला सकते हैं

exec("ping 1.2.3.4")

अपनी स्क्रिप्ट में