Laravel ping IP以检查联机或脱机状态
我使用的是Laravel v.6.11。我想ping一个IP:Port来检查它的在线或离线状态。为此,我使用软件包。每当我ping时,它返回错误的状态,有时服务器打开,它返回false,反之亦然 我的控制器Laravel ping IP以检查联机或脱机状态,laravel,ip,ping,Laravel,Ip,Ping,我使用的是Laravel v.6.11。我想ping一个IP:Port来检查它的在线或离线状态。为此,我使用软件包。每当我ping时,它返回错误的状态,有时服务器打开,它返回false,反之亦然 我的控制器 <?php namespace App\Http\Controllers\User; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Ping; class PlexServerContr
<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Ping;
class PlexServerController extends Controller
{
public function serverStatus(Request $request)
{
$ip = $request->ip;
$port = $request->port;
$health = Ping::check($ip.':'.$port);
if($health == 200){
return $json = json_encode(['status' => '1','health' => $health]);
} else {
return $json = json_encode(['status' => '2','health' => $health]);
}
}
}
好的,在谷歌搜索了几天之后,我终于找到了另一个解决方案,但忘了发布我的答案,因为没有人回复。您可以遵循下面的curl,因为它也是内置的Laravel,并且如果您使用基于Ubuntu/Linux的服务器,速度会更快。下面是am putting dummyip和端口
$ip = '127.0.0.1';
$port = '22';
$url = $ip . ':' . $port;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
$health = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($health) {
$json = json_encode(['health' => $health, 'status' => '1']);
return $json;
} else {
$json = json_encode(['health' => $health, 'status' => '0']);
return $json;
}