Server.php 1.3 KB

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