dispatcher.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. declare(strict_types=0);
  3. define('APP_ID', 'rdispatcher');
  4. define('MOBILE_SERVER',true);
  5. define('SUPPORT_PTHREAD',true);
  6. define('BASE_ROOT_PATH',str_replace('/rdispatcher','',dirname(__FILE__)));
  7. define('BASE_PATH',BASE_ROOT_PATH . '/rdispatcher');
  8. require_once(BASE_ROOT_PATH . '/global.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 . '/algorithm.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_HELPER_PATH . '/refill/RefillFactory.php');
  17. require_once(BASE_PATH . '/processor.php');
  18. require_once(BASE_PATH . '/proxy.php');
  19. if (empty($_SERVER['argv'][1])) exit('parameter error');
  20. $count = intval($_SERVER['argv'][1]);
  21. function all_channels() {
  22. return ['refill'];
  23. }
  24. function handle_error($level, $message, $file, $line)
  25. {
  26. if($level == E_NOTICE) return;
  27. $trace = "handle_error: level={$level},msg={$message} file={$file},line={$line}\n";
  28. $backtrace = debug_backtrace();
  29. foreach ($backtrace as $item) {
  30. $trace .= "{$item['file']}\t{$item['line']}\t{$item['function']}\n";
  31. }
  32. Log::record($trace,Log::ERR);
  33. }
  34. $gMessageStates = null;
  35. function work_proc()
  36. {
  37. Base::run_util();
  38. set_error_handler('handle_error');
  39. global $gMessageStates;
  40. $gMessageStates = new MsgStates();
  41. StatesHelper::init();
  42. $listener = new message\subscriber($gMessageStates);
  43. $listener->start();
  44. $looper = new processor();
  45. $looper->run();
  46. }
  47. //refill\RefillFactory::instance();
  48. //work_proc();
  49. event\util::fork_workerex('work_proc',$count);