create($zone_identifier, "A", "test.97admin.com", "127.0.0.1"); // $id=$dns->update($zone_identifier, "23f0bb6a9eede8750153b1983af5dacc","A","test.97admin.com","127.0.0.2"); // print_r($id); // $dns->update($zone_identifier, $identifier) // die(); while (true) { $data = ServerTable::select(); $str=[]; foreach ($data as $val) { $ip = $val['ip']; $port = $val['port']; $status = $this->check($ip, $port); if ($status == 1) { $str[]=date("Y-m-d H:i:s")."\t\t".$ip . "\t可用\r\n"; } // if ($val['status'] != $status) { ServerTable::update(['status' => $status, "last_check" => date("Y-m-d H:i:s")], ['id' => $val['id']]); if ($status==1){ if (!$recode_data[$val['domain']]){ $recode=$dns->list_records($zone_identifier,null,$val['domain']); $recode=json_decode(json_encode($recode),true); if ($recode['result']){ $result=$recode['result'][0]; $recode_data[$val['domain']]=$result; } } $result=$recode_data[$val['domain']]; // print_r($result); // die(); if (!$result){ $str[]= date("Y-m-d H:i:s")."\t\t"."域名记录【".$val['domain']."】不存在,正在建立\r\n"; $recode=$dns->create($zone_identifier, "A", $val['domain'], $val['ip']); $recode=json_decode(json_encode($recode),true); if ($recode['result']){ $result=$recode['result'][0]; $recode_data[$val['domain']]=$result; $str[]= date("Y-m-d H:i:s")."\t\t"."域名记录【".$val['domain']."】新建成功\r\n"; } } if ($result['content']!=$val['ip']){ $str[]= date("Y-m-d H:i:s")."\t\t"."域名记录【".$val['domain']."】与数据库不一致,正在更新\r\n"; $dns->update($zone_identifier, $result['id'],"A",$val['domain'],$val['ip']); } } // } } $str[]= "第" . $i . "次执行完毕\r\n\r\n"; echo implode("\r\n", $str); file_put_contents("/root/update.txt", implode("\r\n", $str),FILE_APPEND); file_put_contents("/root/dns.txt", var_export($recode_data)); $i++; sleep(60); } } /** * @param string $ip ip * @param int $port 端口 * @return int 返回状态 */ public function check($ip, $port) { $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_set_nonblock($sock); socket_connect($sock, $ip, $port); socket_set_block($sock); $status = socket_select($r = array($sock), $w = array($sock), $f = array($sock), 3); return $status; } }