cqpCow 1 年之前
父节点
当前提交
720a70b336
共有 3 个文件被更改,包括 25 次插入19 次删除
  1. 0 17
      app/Http/Controllers/Api/FyyOrderController.php
  2. 1 1
      app/Service/FyySqlServerService.php
  3. 24 1
      app/Service/Service.php

+ 0 - 17
app/Http/Controllers/Api/FyyOrderController.php

@@ -10,23 +10,6 @@ use Illuminate\Support\Facades\Redis;
 
 class FyyOrderController extends BaseController
 {
-    public function setFyy(Request $request)
-    {
-        $data = $request->all();
-
-        $array = [
-            'sqlserver_host' => $data['host'] ?? '',
-            'sqlserver_port' => $data['port'] ?? 0,
-            'sqlserver_zt' => $data['zt'] ?? '',
-            'sqlserver_account' => $data['account'] ?? '',
-            'sqlserver_password' => $data['password'] ?? '',
-            'sqlserver_host_api' => $data['host_api'] ?? '',
-        ];
-        Redis::set('fyy_sql_server',json_encode($array));
-        Redis::expire('fyy_sql_server', 86400);
-        dump('ok');die;
-    }
-
     public function fyySaveOutOrder(Request $request)
     {
         $service = new FyyOrderService();

+ 1 - 1
app/Service/FyySqlServerService.php

@@ -41,7 +41,7 @@ class FyySqlServerService extends Service
             }
 
             //映射ip是否通畅
-            $bool = $this->isDomainAvailable($this->host);
+            $bool = $this->isHostReachable($this->host);
             if(! $bool) {
                 $this->error = $this->host . "连接不可达,请稍后重新操作!";
                 return;

+ 24 - 1
app/Service/Service.php

@@ -278,10 +278,33 @@ class Service
     // gethostbyname() 函数可能会受到 PHP 配置中的 allow_url_fopen 和 disable_functions 选项的限制
     function isDomainAvailable($domain) {
         $ip = gethostbyname($domain);
-
+dd(filter_var($ip, FILTER_VALIDATE_IP) === false);
         // 如果解析失败或者返回的 IP 地址与输入的域名相同,则说明域名无效
         if ($ip === $domain || filter_var($ip, FILTER_VALIDATE_IP) === false)  return false;
 
         return true;
     }
+
+    function isHostReachable($host, $port = 80, $timeout = 5) {
+        if (filter_var($host, FILTER_VALIDATE_IP) !== false) {
+            // 直接使用 IP 地址
+            $ip = $host;
+        } else {
+            // 获取主机名对应的 IP 地址
+            $ip = gethostbyname($host);
+            if ($ip === $host) {
+                // 如果 gethostbyname 返回原始主机名,则无法解析
+                return false;
+            }
+        }
+
+        // 尝试连接到服务器
+        $socket = @fsockopen($ip, $port, $errno, $errstr, $timeout);
+        if ($socket) {
+            fclose($socket);
+            return true;  // 成功连接
+        }
+
+        return false;  // 连接失败
+    }
 }