Ste*_*eve 44 php internet-connection
如何从我的开发机器上运行的PHP脚本检查我是否连接到互联网?
我运行脚本使用wget下载一组文件(可能存在也可能不存在).如果我在没有连接的情况下尝试下载,wget会继续查看下一个认为该文件不存在的内容.
bla*_*d Ψ 79
<?php
function is_connected()
{
    $connected = @fsockopen("www.example.com", 80); 
                                        //website, port  (try 80 or 443)
    if ($connected){
        $is_conn = true; //action when connected
        fclose($connected);
    }else{
        $is_conn = false; //action in connection failure
    }
    return $is_conn;
}
?>
你可以随时ping好'ol trusty google:
$response = null;
system("ping -c 1 google.com", $response);
if($response == 0)
{
    // this means you are connected
}
此代码在laravel 4.2 php框架中失败,内部服务器500错误:
<?php
     function is_connected()
     {
       $connected = @fsockopen("www.some_domain.com", 80); 
        //website, port  (try 80 or 443)
       if ($connected){
          $is_conn = true; //action when connected
          fclose($connected);
       }else{
         $is_conn = false; //action in connection failure
       }
      return $is_conn;
    }
?>
我不想强调自己想出来,因此我尝试了这个代码,它对我有用:
function is_connected()
{
  $connected = fopen("http://www.google.com:80/","r");
  if($connected)
  {
     return true;
  } else {
   return false;
  }
} 
请注意:这是基于与google.com的连接不太容易失败的假设.
接受的答案对我不起作用。当互联网断开连接时,它会抛出一个 php 错误。所以我用它进行了一些修改,如下所示:
if(!$sock = @fsockopen('www.google.com', 80))
{
    echo 'Not Connected';
}
else
{
echo 'Connected';
}