Server.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. */
  16. protected function main()
  17. {
  18. $i = 0;
  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 ($status == 1) {
  26. echo $ip . "\t可用\r\n";
  27. }
  28. if ($val['status'] != $status) {
  29. ServerTable::update(['status' => $status], ['id' => $val['id']]);
  30. }
  31. }
  32. echo "第" . $i . "次执行完毕\r\n";
  33. $i++;
  34. sleep(60);
  35. }
  36. }
  37. /**
  38. * @param string $ip ip
  39. * @param int $port 端口
  40. * @return int 返回状态
  41. */
  42. public
  43. function check($ip, $port)
  44. {
  45. $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  46. socket_set_nonblock($sock);
  47. socket_connect($sock, $ip, $port);
  48. socket_set_block($sock);
  49. $status = socket_select($r = array($sock), $w = array($sock), $f = array($sock), 3);
  50. return $status;
  51. }
  52. }