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;
}
?>
Run Code Online (Sandbox Code Playgroud)
你可以随时ping好'ol trusty google:
$response = null;
system("ping -c 1 google.com", $response);
if($response == 0)
{
// this means you are connected
}
Run Code Online (Sandbox Code Playgroud)
此代码在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;
}
?>
Run Code Online (Sandbox Code Playgroud)
我不想强调自己想出来,因此我尝试了这个代码,它对我有用:
function is_connected()
{
$connected = fopen("http://www.google.com:80/","r");
if($connected)
{
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意:这是基于与google.com的连接不太容易失败的假设.
接受的答案对我不起作用。当互联网断开连接时,它会抛出一个 php 错误。所以我用它进行了一些修改,如下所示:
if(!$sock = @fsockopen('www.google.com', 80))
{
echo 'Not Connected';
}
else
{
echo 'Connected';
}
Run Code Online (Sandbox Code Playgroud)