Ben Twitter (örneğin, şimdi aksine) mevcut olup olmadığını kontrol edecek küçük bir IF yordam oluşturmak istiyorum, ve doğru veya yanlış dönecektir.
Yardım :)
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;
}
}
Bu bir URL olup olmadığını denetlemek için nasıl this post yakaladı edildi. Bu bakım, ya da 404 olduğunda Twitter 300 üzerinde bir hata mesajı vermelidir, çünkü bu mükemmel çalışması gerekir.
İşte biri:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?lngWId=8&txtCodeId=1786
Başka:
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);
Kullanma shell_exec,
<?php
$output = shell_exec('ping -c1 google.com');
echo "<pre>$output</pre>";
?>
Başka bir seçenek (eğer gerekiyorsa / ping yerine bir HTTP isteği göndermek istiyorum) Ping class for PHP olduğunu. Ben sadece bu amaç için yazdım, ve (bazı sunucular / ortamlar sadece üç yöntemden birini destekleyen) bir sunucuya ping üç desteklenen yöntemlerden birini kullanmanızı sağlar.
Örnek kullanım:
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şağıdaki fonksiyonu ile sadece kullanarak saf ICMP paketleri gönderiyor socket_create. I a user note oradan aşağıdaki kodu var. N.B. Sen root olarak aşağıdaki çalıştırmalısınız.
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;
}
Çalışıyor ...
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;
}