dispatcher.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. declare(strict_types=0);
  3. define('APP_ID', 'rdispatcher');
  4. define('MOBILE_SERVER',true);
  5. define('BASE_ROOT_PATH',str_replace('/rdispatcher','',dirname(__FILE__)));
  6. define('BASE_PATH',BASE_ROOT_PATH . '/rdispatcher');
  7. require_once(BASE_ROOT_PATH . '/global.php');
  8. require_once(BASE_ROOT_PATH . '/fooder.php');
  9. require_once(BASE_ROOT_PATH . '/fooder.php');
  10. require_once(BASE_HELPER_PATH . '/event_looper.php');
  11. require_once(BASE_HELPER_PATH . '/queue/rdispatcher.php');
  12. require_once(BASE_HELPER_PATH . '/refill/RefillFactory.php');
  13. require_once(BASE_HELPER_PATH . '/message/msgstates.php');
  14. require_once(BASE_HELPER_PATH . '/message/msgutil.php');
  15. require_once(BASE_HELPER_PATH . '/message/subscriber.php');
  16. require_once(BASE_PATH . '/processor.php');
  17. require_once(BASE_PATH . '/proxy.php');
  18. require_once(BASE_PATH . '/yzpolicy.php');
  19. //这个可以
  20. //Co::set(['hook_flags' => SWOOLE_HOOK_ALL ^ SWOOLE_HOOK_TCP ^ SWOOLE_HOOK_UDP ^
  21. // SWOOLE_HOOK_FILE ^ SWOOLE_HOOK_UNIX ^
  22. // SWOOLE_HOOK_STREAM_FUNCTION ^
  23. // SWOOLE_HOOK_BLOCKING_FUNCTION ^
  24. // SWOOLE_HOOK_PROC ^
  25. // SWOOLE_HOOK_SLEEP ^
  26. // SWOOLE_HOOK_TLS ^
  27. // SWOOLE_HOOK_SSL
  28. //]);
  29. //这样会导致,curl 协程部分不执行,收不到数据
  30. //Co::set(['hook_flags' => SWOOLE_HOOK_NATIVE_CURL | SWOOLE_HOOK_SOCKETS]);
  31. //这样会导致,redis任何阻塞函数不返回
  32. //Co::set(['hook_flags' => SWOOLE_HOOK_ALL]);
  33. //目前没发现问题
  34. Co::set(['hook_flags' => SWOOLE_HOOK_ALL ^ SWOOLE_HOOK_TCP]);
  35. if (empty($_SERVER['argv'][1])) exit('parameter error');
  36. $count = intval($_SERVER['argv'][1]);
  37. function all_channels() {
  38. return ['refill'];
  39. }
  40. function work_proc()
  41. {
  42. Base::run_util();
  43. $trdid = Thread::getCurrentThreadId();
  44. Log::record("thread id = {$trdid}",Log::INFO);
  45. //
  46. // $gMessageStates = new MsgStates();
  47. // StatesHelper::init();
  48. // $listener = new message\subscriber($gMessageStates);
  49. // $listener->start();
  50. $looper = new processor();
  51. $looper->run();
  52. }
  53. function corun()
  54. {
  55. Log::record("start run process",Log::DEBUG);
  56. Co\run(function() {
  57. work_proc();
  58. });
  59. // $process = new swoole_process(function(swoole_process $process)
  60. // {
  61. // try {
  62. // Log::record("start run process",Log::DEBUG);
  63. // Co\run(function() {
  64. // work_proc();
  65. // });
  66. // } catch (Exception $ex) {
  67. // Log::record("",Log::ERR);
  68. // }
  69. // });
  70. //
  71. // $pid = $process->start();
  72. // return $pid;
  73. }
  74. event\util::fork_workerex('corun',$count);