如果网络不在服务中,PHP将获取信息

时间:2011-06-03 02:37:42

标签: php gravatar

我在我的网站上使用gravatar图片,但如果网络不好,我想知道并以其他方式使用图片。 那么如何知道某个特定网站是否在服务中呢?

4 个答案:

答案 0 :(得分:1)

无需复杂的套接字和其他远程处理。您可以使用PHP GD库验证返回的图像是否确实是图像:

if( !$size = getimagesize($filename) ) {
   $image = 'images/default.jpg';
}

答案 1 :(得分:0)

如果您的目标只是检查网站是否已关闭,那么您可以在PHP中完成此操作,如herehere所述。从本质上讲,你会尝试打开那个网站,如果有什么东西加载,你会认为它已经启动并运行,如果它没有加载你就假设网站已关闭。

答案 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 )
}

?>

问题是你不能只是继续查询远程服务器,因为这会给你的页面/应用程序增加一个很大的延迟 - 你需要将这些信息缓存一段时间(数据库,文件,等等)。