start_gateway_tcp.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. use Workerman\Worker;
  3. use Workerman\Lib\Timer;
  4. use Workerman\Protocols\Http\Response;
  5. use Workerman\Protocols\Http;
  6. define('WORKERNAME', 'WebServer');
  7. // #### http worker ####
  8. $http_worker = new Worker("http://0.0.0.0:8284");
  9. //
  10. //// 4 processes
  11. $http_worker->count = WEBSERVER_PROCESSES_COUNT;
  12. $http_worker->name = 'crazy_god_API_web';
  13. // Emitted when data received
  14. $http_worker->onWorkerStart= function($worker){
  15. global $dbs;
  16. global $rediss;
  17. $dbs = oo::commonOprDb('common');
  18. $dbs->connect();
  19. $redisArr =['common','statistics'];
  20. foreach ($redisArr as $v){
  21. $rediss[$v] = oo::commonOprRedis($v);
  22. }
  23. $time_id = Timer::add(5, function () use (&$time_id,$redisArr) {
  24. global $dbs;
  25. global $rediss;
  26. if(!$dbs->ping()){//失败释放内存,重连
  27. echo date('Y-m-d H:i:s').'close-mysql'."\r\n";
  28. $dbs->close();
  29. oo::$objDb =[];
  30. $dbs = oo::commonOprDb('common');
  31. }
  32. foreach ($redisArr as $v){
  33. if(!$rediss[$v]->ping()){//失败释放内存,重连
  34. echo date('Y-m-d H:i:s').'close-redis'."\r\n";
  35. $rediss[$v]->close();
  36. oo::$objRedis =[];
  37. $rediss[$v] = oo::commonOprRedis('common');
  38. }
  39. }
  40. });
  41. require_once WWWROOT . "lib/ProtocolsEvent.php";//解码
  42. require_once WWWROOT . 'api/login_new.php';
  43. //require_once WWWROOT . 'api/gateway_new.php';
  44. };
  45. /**
  46. * Notes:
  47. * User: wsc
  48. * Time: 2021/1/19 16:29
  49. * @param $connection
  50. * @param $request Workerman\Protocols\Http\Request
  51. */
  52. $http_worker->onMessage = function($connection, $request)
  53. {
  54. $gets =$request->get();
  55. $posts =$request->post();
  56. $uri = $request->path();
  57. //负载均衡使用go网关代理设置的header client_ip
  58. $ip = $request->post('FrontendIPKeymmm');
  59. if(empty($ip)){
  60. $ips = $request->header('x-forwarded-for');
  61. $ip ='';
  62. if(!empty($ips)){
  63. $ips = explode(',',$ips);
  64. $ip=$ips?$ips[0]:'';
  65. }
  66. }
  67. $host = $request->header('host');
  68. //get请求
  69. if (isset($gets)&&!empty($gets)) {
  70. $getParams = $gets;
  71. }
  72. //post请求
  73. if (isset($posts)&&!empty($posts)) {
  74. $getParams = $posts;
  75. }
  76. if(isset($getParams['FrontendIPKeymmm'])){
  77. unset($getParams['FrontendIPKeymmm']);
  78. }
  79. //加密则重置请求参数
  80. if(isset($getParams['param'])&&!empty($getParams['param'])){
  81. $getParams = ProtocolsEvent::apiDecodeNew($getParams['param']);
  82. }
  83. $getParams['from_ip'] = $ip;
  84. $getParams['from_host'] = $host;
  85. if($uri != '/api/gateway.php'){
  86. $obj = new LoginNew($getParams);
  87. $ret = $obj->start();
  88. }else{
  89. $ret = '';
  90. //$ret = (new GatewayNew)->start($getParams);
  91. }
  92. if(is_array($ret)){
  93. $ret = json_encode($ret,32);
  94. }
  95. $response = new Response(200, [
  96. 'Access-Control-Allow-Origin' => '*',
  97. 'Access-Control-Allow-Method' => '*',
  98. 'Access-Control-Allow-Headers' => 'Content-Type',
  99. 'Content-Type' => 'text/plain;charset=UTF-8',
  100. //'Connection' => 'keep-alive',
  101. //'Keep-Alive' => 'timeout=5, max=100',
  102. ], $ret);
  103. $connection->send($response);
  104. };
  105. if(!defined('GLOBAL_START'))
  106. {
  107. Worker::runAll();
  108. }