我在我的网站上使用gravatar图片,但如果网络不好,我想知道并以其他方式使用图片。 那么如何知道某个特定网站是否在服务中呢?
答案 0 :(得分:1)
无需复杂的套接字和其他远程处理。您可以使用PHP GD库验证返回的图像是否确实是图像:
if( !$size = getimagesize($filename) ) {
$image = 'images/default.jpg';
}
答案 1 :(得分:0)
如果您的目标只是检查网站是否已关闭,那么您可以在PHP中完成此操作,如here和here所述。从本质上讲,你会尝试打开那个网站,如果有什么东西加载,你会认为它已经启动并运行,如果它没有加载你就假设网站已关闭。
答案 2 :(得分:0)
试试这个:
<?php
function GetServerStatus($site, $port)
{
$fp = @fsockopen($site, $port, $errno, $errstr, 2);
if (!$fp)
return false;
else
return true;
}
?>
传递一个站点(或IP)和一个端口,如果站点关闭则返回false,如果站点启动则返回true。这至少会告诉您网站是否已关闭。
答案 3 :(得分:0)
要知道网站已关闭,您基本上需要尝试从中获取一些数据(网页,图像,等等)并使用超时。如果在该时间段内没有返回任何数据,则假定它已关闭。
这是一个简单的方法:
<?php
ini_set('default_socket_timeout', 5);
function getNetworkStatus(url) {
return ( file_get_contents(urlencode($url)) !== false )
}
?>
问题是你不能只是继续查询远程服务器,因为这会给你的页面/应用程序增加一个很大的延迟 - 你需要将这些信息缓存一段时间(数据库,文件,等等)。