@@ -49,49 +49,56 @@ public function __construct()
4949 */
5050 public function run (ITaskParam $ param )
5151 {
52- /** @var \Imi\Cron\CronTask $task */
53- $ task = $ param ->getData ();
54- /** @var \Imi\Cron\CronManager $cronManager */
55- $ cronManager = App::getBean ('CronManager ' );
56- switch ($ type = $ task ->getType ())
52+ try
5753 {
58- case CronTaskType::RANDOM_WORKER :
59- $ swooleServer = ServerManager::getServer ('main ' , ISwooleServer::class)->getSwooleServer ();
60- $ taskClass = $ task ->getTask ();
61- $ swooleServer ->sendMessage (json_encode ([
62- 'action ' => 'cronTask ' ,
63- 'id ' => $ task ->getId (),
64- 'data ' => $ task ->getData (),
65- 'task ' => \is_callable ($ taskClass ) ? null : $ taskClass ,
66- 'type ' => $ type ,
67- ], \JSON_THROW_ON_ERROR | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE ), random_int (0 , $ swooleServer ->setting ['worker_num ' ] - 1 ));
68- break ;
69- case CronTaskType::ALL_WORKER :
70- $ swooleServer = ServerManager::getServer ('main ' , ISwooleServer::class)->getSwooleServer ();
71- $ taskClass = $ task ->getTask ();
72- $ message = json_encode ([
73- 'action ' => 'cronTask ' ,
74- 'id ' => $ task ->getId (),
75- 'data ' => $ task ->getData (),
76- 'task ' => \is_callable ($ taskClass ) ? null : $ taskClass ,
77- 'type ' => $ type ,
78- ], \JSON_THROW_ON_ERROR | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE );
79- for ($ i = 0 ; $ i < $ swooleServer ->setting ['worker_num ' ]; ++$ i )
80- {
81- $ swooleServer ->sendMessage ($ message , $ i );
82- }
83- break ;
84- case CronTaskType::TASK :
85- $ cronManager ->getTaskCallable ($ task ->getId (), $ task ->getTask (), $ type )($ task ->getId (), $ task ->getData ());
86- break ;
87- case CronTaskType::PROCESS :
88- $ cronManager ->getTaskCallable ($ task ->getTask (), $ task ->getTask (), $ type )($ task ->getId (), $ task ->getData ());
89- break ;
90- case CronTaskType::CRON_PROCESS :
91- /** @var \Imi\Cron\CronWorker $cronWorker */
92- $ cronWorker = App::getBean ('CronWorker ' );
93- $ cronWorker ->exec ($ task ->getId (), $ task ->getData (), $ task ->getTask (), $ type );
94- break ;
54+ /** @var \Imi\Cron\CronTask $task */
55+ $ task = $ param ->getData ();
56+ /** @var \Imi\Cron\CronManager $cronManager */
57+ $ cronManager = App::getBean ('CronManager ' );
58+ switch ($ type = $ task ->getType ())
59+ {
60+ case CronTaskType::RANDOM_WORKER :
61+ $ swooleServer = ServerManager::getServer ('main ' , ISwooleServer::class)->getSwooleServer ();
62+ $ taskClass = $ task ->getTask ();
63+ $ swooleServer ->sendMessage (json_encode ([
64+ 'action ' => 'cronTask ' ,
65+ 'id ' => $ task ->getId (),
66+ 'data ' => $ task ->getData (),
67+ 'task ' => \is_callable ($ taskClass ) ? null : $ taskClass ,
68+ 'type ' => $ type ,
69+ ], \JSON_THROW_ON_ERROR | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE ), random_int (0 , $ swooleServer ->setting ['worker_num ' ] - 1 ));
70+ break ;
71+ case CronTaskType::ALL_WORKER :
72+ $ swooleServer = ServerManager::getServer ('main ' , ISwooleServer::class)->getSwooleServer ();
73+ $ taskClass = $ task ->getTask ();
74+ $ message = json_encode ([
75+ 'action ' => 'cronTask ' ,
76+ 'id ' => $ task ->getId (),
77+ 'data ' => $ task ->getData (),
78+ 'task ' => \is_callable ($ taskClass ) ? null : $ taskClass ,
79+ 'type ' => $ type ,
80+ ], \JSON_THROW_ON_ERROR | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE );
81+ for ($ i = 0 ; $ i < $ swooleServer ->setting ['worker_num ' ]; ++$ i )
82+ {
83+ $ swooleServer ->sendMessage ($ message , $ i );
84+ }
85+ break ;
86+ case CronTaskType::TASK :
87+ $ cronManager ->getTaskCallable ($ task ->getId (), $ task ->getTask (), $ type )($ task ->getId (), $ task ->getData ());
88+ break ;
89+ case CronTaskType::PROCESS :
90+ $ cronManager ->getTaskCallable ($ task ->getTask (), $ task ->getTask (), $ type )($ task ->getId (), $ task ->getData ());
91+ break ;
92+ case CronTaskType::CRON_PROCESS :
93+ /** @var \Imi\Cron\CronWorker $cronWorker */
94+ $ cronWorker = App::getBean ('CronWorker ' );
95+ $ cronWorker ->exec ($ task ->getId (), $ task ->getData (), $ task ->getTask (), $ type );
96+ break ;
97+ }
98+ }
99+ catch (\Throwable $ th )
100+ {
101+ Log::error ($ th );
95102 }
96103 }
97104 }
0 commit comments