EasySwooleEvent.php 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace EasySwoole\EasySwoole;
  3. use App\Crontab\ElasticSearchGoodsNewCrontab;
  4. use EasySwoole\EasySwoole\AbstractInterface\Event;
  5. use EasySwoole\EasySwoole\Swoole\EventRegister;
  6. use EasySwoole\Crontab\Crontab;
  7. use App\Crontab\BalanceCrontab;
  8. use App\Crontab\XcxWarningCrontab;
  9. use EasySwoole\ORM\DbManager;
  10. use EasySwoole\ORM\Db\Connection;
  11. use EasySwoole\ORM\Db\Config;
  12. use App\Crontab\ElasticSearchGoodsCrontab;
  13. use App\Crontab\SeckillCrontab;
  14. class EasySwooleEvent implements Event
  15. {
  16. public static function initialize()
  17. {
  18. date_default_timezone_set('Asia/Shanghai');
  19. //获取系统配置
  20. $mysql_conf = \EasySwoole\EasySwoole\Config::getInstance()->getConf('MYSQL');
  21. $config = new Config();
  22. $config->setDatabase($mysql_conf['database']);
  23. $config->setUser($mysql_conf['user']);
  24. $config->setPassword($mysql_conf['password']);
  25. $config->setHost($mysql_conf['host']);
  26. $config->setTimeout($mysql_conf['timeout']); // 超时时间
  27. //连接池配置
  28. $config->setGetObjectTimeout($mysql_conf['getObjectTimeout']); //设置获取连接池对象超时时间
  29. $config->setIntervalCheckTime($mysql_conf['intervalCheckTime']); //设置检测连接存活执行回收和创建的周期
  30. $config->setMaxIdleTime($mysql_conf['maxIdleTime']); //连接池对象最大闲置时间(秒)
  31. $config->setMinObjectNum($mysql_conf['minObjectNum']); //设置最小连接池存在连接对象数量
  32. $config->setMaxObjectNum($mysql_conf['maxObjectNum']); //设置最大连接池存在连接对象数量
  33. $config->setAutoPing($mysql_conf['autoPing']); //设置自动ping客户端链接的间隔
  34. DbManager::getInstance()->addConnection(new Connection($config));
  35. }
  36. public static function mainServerCreate(EventRegister $register)
  37. {
  38. ###### 注册一个定时任务 ######
  39. // 配置定时任务
  40. $crontabConfig = new \EasySwoole\Crontab\Config();
  41. // 1.设置执行定时任务的 socket 服务的 socket 文件存放的位置,默认值为 当前文件所在目录
  42. // 这里设置为框架的 Temp 目录
  43. $crontabConfig->setTempDir(EASYSWOOLE_TEMP_DIR);
  44. // 2.设置执行定时任务的 socket 服务的名称,默认值为 'EasySwoole'
  45. $crontabConfig->setServerName('EasySwoole');
  46. // 3.设置用来执行定时任务的 worker 进程数,默认值为 3
  47. $crontabConfig->setWorkerNum(3);
  48. // 4.设置定时任务执行出现异常的异常捕获回调
  49. $crontabConfig->setOnException(function (\Throwable $throwable) {
  50. // 定时任务执行发生异常时触发(如果未在定时任务类的 onException 中进行捕获异常则会触发此异常回调)
  51. });
  52. // 创建定时任务实例
  53. // $crontab = new Crontab($crontabConfig);
  54. $crontab = \EasySwoole\EasySwoole\Crontab\Crontab::getInstance($crontabConfig);
  55. // 注册定时任务
  56. $crontab->register(new BalanceCrontab());
  57. $crontab->register(new SeckillCrontab());
  58. $crontab->register(new ElasticSearchGoodsCrontab());
  59. $crontab->register(new ElasticSearchGoodsNewCrontab());
  60. $crontab->attachToServer(ServerManager::getInstance()->getSwooleServer());
  61. }
  62. }