Server.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: chendeben
  5. * Date: 2018/8/31
  6. * Time: 下午9:35
  7. */
  8. namespace PhpLife\App\Script\Controller;
  9. use PhpLife\App\Script\Controller;
  10. use PhpLife\App\Api\Package\Database\Server as ServerTable;
  11. class Server extends Controller
  12. {
  13. /**
  14. * 执行逻辑
  15. * @return mixed
  16. */
  17. protected function main()
  18. {
  19. while (true){
  20. $data = ServerTable::select();
  21. foreach ($data as $val) {
  22. $ip = $val['ip'];
  23. $port = $val['port'];
  24. $status = $this->check($ip, $port);
  25. if ($val['status'] != $status) {
  26. ServerTable::update(['status' => $status], ['id' => $val['id']]);
  27. }
  28. }
  29. sleep(60);
  30. }
  31. }
  32. /**
  33. * @param string $ip ip
  34. * @param int $port 端口
  35. * @return int 返回状态
  36. */
  37. public function check($ip, $port)
  38. {
  39. $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  40. socket_set_nonblock($sock);
  41. socket_connect($sock, $ip, $port);
  42. socket_set_block($sock);
  43. $status = socket_select($r = array($sock), $w = array($sock), $f = array($sock), 2);
  44. return $status;
  45. }
  46. }