में पिंग साइट और रिटर्न परिणाम मैं एक छोटी आईएफ प्रक्रिया बनाना चाहता हूं जो जांच करेगा कि ट्विटर उपलब्ध है या नहीं, (उदाहरण के लिए, उदाहरण के लिए), और सही या गलत वापस आ जाएगा।पीएच साइट
मदद :)
में पिंग साइट और रिटर्न परिणाम मैं एक छोटी आईएफ प्रक्रिया बनाना चाहता हूं जो जांच करेगा कि ट्विटर उपलब्ध है या नहीं, (उदाहरण के लिए, उदाहरण के लिए), और सही या गलत वापस आ जाएगा।पीएच साइट
मदद :)
function urlExists($url=NULL)
{
if($url == NULL) return false;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpcode>=200 && $httpcode<300){
return true;
} else {
return false;
}
}
यह है कि URL मौजूद है, इसकी जांच करने पर this post से पकड़ा गया था। चूंकि ट्विटर को रखरखाव में 300 से ऊपर एक त्रुटि संदेश प्रदान करना चाहिए, या 404, यह पूरी तरह से काम करना चाहिए।
यदि आपको एसएसएल की आवश्यकता है तो इस पोस्ट को https: // stackoverflow पर एक नज़र डालें।कॉम/प्रश्न/4372710/php-curl-https – eballo
यहाँ एक है:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=8&txtCodeId=1786
एक और:
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";
}
//Echoing it will display the ping if the host is up, if not it'll say "down".
echo ping("www.google.com", 80, 10);
कि कोई अच्छा रिटर्न वैल्यू नहीं है। विफलता पर 0/झूठी/शून्य क्यों नहीं लौटें और सफलता पर मिलीसेकंड का प्रतिनिधित्व करने वाला एक पूर्णांक? –
@ फिलिपेप Gerber - क्योंकि मैंने इसे नहीं लिखा था, लेकिन वे अच्छे सुझाव हैं। – karim79
पिंग आईसीएमपी प्रोटोकॉल पर काम कर रहा है, ऐसी कोई चीज नहीं है जैसे 'पोर्ट'। आप 0 खुले टीसीपी बंदरगाहों के साथ एक मेजबान पिंग कर सकते हैं। – deejayy
ping
लगभग हर ओएस पर उपलब्ध है। तो आप एक सिस्टम कॉल कर सकते हैं और परिणाम प्राप्त कर सकते हैं।
shell_exec का उपयोग करना:
<?php
$output = shell_exec('ping -c1 google.com');
echo "<pre>$output</pre>";
?>
आपको 'पिंग-सी 1 होस्ट' या लिनक्स पर कुछ उपयोग करना चाहिए। सादा 'पिंग होस्ट' वहां वापस नहीं आएगा। – Michas
बेहतर अभी तक: 'if (0! = ($ _result = \' ping -q -c1 google.com>/dev/null 2> &1 ; echo $? \ ')) { गूंज 'विफल'। } ' – lucifurious
एक अन्य विकल्प (आप की जरूरत/के बजाय पिंग एक HTTP अनुरोध भेजना चाहते हैं) Ping class for PHP है। मैंने इसे केवल इस उद्देश्य के लिए लिखा है, और यह आपको सर्वर को पिंग करने के लिए तीन समर्थित तरीकों में से एक का उपयोग करने देता है (कुछ सर्वर/वातावरण केवल तीन विधियों में से एक का समर्थन करते हैं)।
उदाहरण उपयोग:
require_once('Ping/Ping.php');
$host = 'www.example.com';
$ping = new Ping($host);
$latency = $ping->ping();
if ($latency) {
print 'Latency is ' . $latency . ' ms';
}
else {
print 'Host could not be reached.';
}
। मुझे निम्नलिखित कोड a user note से मिला है। N.B. आपको रूट के रूप में निम्न को चलाना होगा।
हालांकि आप इसे एक मानक वेब पेज में नहीं डाल सकते हैं, आप इसे क्रॉन नौकरी के रूप में चला सकते हैं और परिणामों के साथ डेटाबेस को पॉप्युलेट कर सकते हैं।
तो यदि आपको साइट पर नजर रखने की आवश्यकता है तो यह सबसे उपयुक्त है।
function twitterIsUp() {
return ping('twitter.com');
}
function ping ($host, $timeout = 1) {
/* ICMP ping packet with a pre-calculated checksum */
$package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost";
$socket = socket_create(AF_INET, SOCK_RAW, 1);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));
socket_connect($socket, $host, null);
$ts = microtime(true);
socket_send($socket, $package, strLen($package), 0);
if (socket_read($socket, 255)) {
$result = microtime(true) - $ts;
} else {
$result = false;
}
socket_close($socket);
return $result;
}
इस php कोड मैं प्रयोग किया जाता है, जबाब इस तरह आम तौर पर है:
2 packets transmitted, 2 received, 0% packet loss, time 1089ms
तो मैं इस तरह कोड का इस्तेमाल किया:
$ping_how_many = 2; $ping_result = shell_exec('ping -c '.$ping_how_many.' bing.com'); if(!preg_match('/'.$ping_how_many.' received/',$ping_result)){ echo 'Bad ping result'. PHP_EOL; // goto next1; }पिंग के बजाय
इससे 'पिंग: आईसीएमपी खुली सॉकेट हो सकती है: अनुमति अस्वीकृत'। इसे हल करने के लिए, SELinux अनुमोदित होना चाहिए –
, आपको किसी http अनुरोध करना नहीं कर सकते ? – palindrom