1

我在我的网站中使用gravatar来获取图像,但如果网络不好,我想知道这一点并以其他方式使用图像。那么我怎么知道某个特定的网站是否没有服务呢?

4

4 回答 4

1

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

if( !$size = getimagesize($filename) ) {
   $image = 'images/default.jpg';
}
于 2011-06-03T02:50:55.727 回答
0

如果您的目标只是检查网站是否已关闭,您可以按照此处此处的说明在 php 中非常简单地执行此操作。本质上,您将尝试打开该网站,如果加载了某些内容,则假设它已启动并正在运行,如果未加载则假设该网站已关闭。

于 2011-06-03T02:46:29.177 回答
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 回答