我在我的网站中使用gravatar来获取图像,但如果网络不好,我想知道这一点并以其他方式使用图像。那么我怎么知道某个特定的网站是否没有服务呢?
问问题
92 次
4 回答
1
无需复杂的套接字和其他远程处理。您可以使用 PHP GD 库验证返回的图像是否确实是图像:
if( !$size = getimagesize($filename) ) {
$image = 'images/default.jpg';
}
于 2011-06-03T02:50:55.727 回答
0
尝试这个:
<?php
function GetServerStatus($site, $port)
{
$fp = @fsockopen($site, $port, $errno, $errstr, 2);
if (!$fp)
return false;
else
return true;
}
?>
向它传递一个站点(或 IP)和一个端口,如果站点关闭,它将返回 false,如果站点启动,它将返回 true。这至少会告诉您该站点是否已关闭。
于 2011-06-03T02:48:01.970 回答
0
要知道某个站点已关闭,您基本上需要尝试从中获取一些数据(网页、图像等)并使用超时。如果在该时间段内没有返回数据,则假设它已关闭。
这是一个简单的方法:
<?php
ini_set('default_socket_timeout', 5);
function getNetworkStatus(url) {
return ( file_get_contents(urlencode($url)) !== false )
}
?>
问题是您不能只继续查询远程服务器,因为这会给您的页面/应用程序增加很大的延迟——您需要将此信息缓存一段时间(数据库、文件等)。
于 2011-06-03T02:54:37.030 回答