diff --git a/System/Crontab.php b/System/Crontab.php index d6643327..205118d1 100644 --- a/System/Crontab.php +++ b/System/Crontab.php @@ -18,11 +18,12 @@ class Crontab extends Component /** * @param array|Closure $handler + * @param mixed $params * @param int $tickTime * @param bool $isLoop * @throws Exception */ - public function dispatch(array|Closure $handler, $tickTime = 1, $isLoop = false) + public function dispatch(array|Closure $handler, mixed $params = null, $tickTime = 1, $isLoop = false) { $redis = Snowflake::app()->getRedis(); @@ -32,9 +33,9 @@ class Crontab extends Component $executeTime = time() + $tickTime; - $crontab = ['isLoop' => $isLoop, 'handler' => $handler, 'tick' => $tickTime]; + $crontab = ['isLoop' => $isLoop, 'handler' => $handler, 'tick' => $tickTime, 'params' => $params]; - $redis->sAdd('system:crontab', $executeTime, serialize($crontab)); + $redis->zAdd('system:crontab', $executeTime, serialize($crontab)); } } diff --git a/System/Process/CrontabProcess.php b/System/Process/CrontabProcess.php index c6105d33..6ce6c255 100644 --- a/System/Process/CrontabProcess.php +++ b/System/Process/CrontabProcess.php @@ -51,7 +51,7 @@ class CrontabProcess extends Process $redis->zAdd('system:crontab', 0, time() + $list['tick'], serialize($list)); } try { - call_user_func($list['handler']); + call_user_func($list['handler'], $list['params'] ?? null); } catch (\Throwable $throwable) { $this->application->addError($throwable->getMessage()); }