@@ -49,49 +49,56 @@ public function __construct()
49
49
*/
50
50
public function run (ITaskParam $ param )
51
51
{
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
57
53
{
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 );
95
102
}
96
103
}
97
104
}
0 commit comments