PHP получает информацию, если сеть не работает - PullRequest
1 голос
/ 03 июня 2011

Я использую gravatar для изображений на моем веб-сайте, но если сеть плохая, я хотел бы знать это и использовать изображения другими способами.Так как же узнать, не работает ли конкретный сайт?

Ответы [ 4 ]

1 голос
/ 03 июня 2011

Нет необходимости в сложных сокетах и ​​другой удаленной обработке. Вы можете проверить, действительно ли возвращенное изображение является изображением, используя библиотеку PHP GD:

if( !$size = getimagesize($filename) ) {
   $image = 'images/default.jpg';
}
0 голосов
/ 03 июня 2011

Чтобы знать, что сайт не работает, вам нужно попытаться получить от него некоторые данные (веб-страницу, изображение и т. Д.) И использовать тайм-аут.Если в течение этого периода данные не возвращаются, предположим, что они не работают.

Вот простой способ:

<?php

ini_set('default_socket_timeout', 5);

function getNetworkStatus(url) {
  return ( file_get_contents(urlencode($url)) !== false )
}

?>

Проблема в том, что вы не можете просто продолжать запрашивать удаленный сервер, так какдобавит большую задержку к вашей странице / приложению - вам нужно будет кэшировать эту информацию в течение определенного периода времени (база данных, файл и т. д.).

0 голосов
/ 03 июня 2011

Попробуйте:

<?php
   function GetServerStatus($site, $port)
   {
      $fp = @fsockopen($site, $port, $errno, $errstr, 2);
      if (!$fp) 
        return false;
      else
        return true;
   }
?>

передайте ему сайт (или IP) и порт, и он вернет false, если сайт не работает, и true, если сайт работает.Это по крайней мере скажет вам, если сайт не работает или нет.

0 голосов
/ 03 июня 2011

Если ваша цель просто проверить, не работает ли сайт, вы можете сделать это довольно просто в php, как объяснено здесь и здесь .По сути, вы попытаетесь открыть этот веб-сайт, и, если что-то загружается, вы предполагаете, что он работает и работает, если он не загружается, вы предполагаете, что сайт не работает.

...