diff --git a/src/Components/swoole/src/Cron/Scheduler.php b/src/Components/swoole/src/Cron/Scheduler.php index c1a45df9e..4f17dac68 100644 --- a/src/Components/swoole/src/Cron/Scheduler.php +++ b/src/Components/swoole/src/Cron/Scheduler.php @@ -49,49 +49,56 @@ public function __construct() */ public function run(ITaskParam $param) { - /** @var \Imi\Cron\CronTask $task */ - $task = $param->getData(); - /** @var \Imi\Cron\CronManager $cronManager */ - $cronManager = App::getBean('CronManager'); - switch ($type = $task->getType()) + try { - case CronTaskType::RANDOM_WORKER: - $swooleServer = ServerManager::getServer('main', ISwooleServer::class)->getSwooleServer(); - $taskClass = $task->getTask(); - $swooleServer->sendMessage(json_encode([ - 'action' => 'cronTask', - 'id' => $task->getId(), - 'data' => $task->getData(), - 'task' => \is_callable($taskClass) ? null : $taskClass, - 'type' => $type, - ], \JSON_THROW_ON_ERROR | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE), random_int(0, $swooleServer->setting['worker_num'] - 1)); - break; - case CronTaskType::ALL_WORKER: - $swooleServer = ServerManager::getServer('main', ISwooleServer::class)->getSwooleServer(); - $taskClass = $task->getTask(); - $message = json_encode([ - 'action' => 'cronTask', - 'id' => $task->getId(), - 'data' => $task->getData(), - 'task' => \is_callable($taskClass) ? null : $taskClass, - 'type' => $type, - ], \JSON_THROW_ON_ERROR | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE); - for ($i = 0; $i < $swooleServer->setting['worker_num']; ++$i) - { - $swooleServer->sendMessage($message, $i); - } - break; - case CronTaskType::TASK: - $cronManager->getTaskCallable($task->getId(), $task->getTask(), $type)($task->getId(), $task->getData()); - break; - case CronTaskType::PROCESS: - $cronManager->getTaskCallable($task->getTask(), $task->getTask(), $type)($task->getId(), $task->getData()); - break; - case CronTaskType::CRON_PROCESS: - /** @var \Imi\Cron\CronWorker $cronWorker */ - $cronWorker = App::getBean('CronWorker'); - $cronWorker->exec($task->getId(), $task->getData(), $task->getTask(), $type); - break; + /** @var \Imi\Cron\CronTask $task */ + $task = $param->getData(); + /** @var \Imi\Cron\CronManager $cronManager */ + $cronManager = App::getBean('CronManager'); + switch ($type = $task->getType()) + { + case CronTaskType::RANDOM_WORKER: + $swooleServer = ServerManager::getServer('main', ISwooleServer::class)->getSwooleServer(); + $taskClass = $task->getTask(); + $swooleServer->sendMessage(json_encode([ + 'action' => 'cronTask', + 'id' => $task->getId(), + 'data' => $task->getData(), + 'task' => \is_callable($taskClass) ? null : $taskClass, + 'type' => $type, + ], \JSON_THROW_ON_ERROR | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE), random_int(0, $swooleServer->setting['worker_num'] - 1)); + break; + case CronTaskType::ALL_WORKER: + $swooleServer = ServerManager::getServer('main', ISwooleServer::class)->getSwooleServer(); + $taskClass = $task->getTask(); + $message = json_encode([ + 'action' => 'cronTask', + 'id' => $task->getId(), + 'data' => $task->getData(), + 'task' => \is_callable($taskClass) ? null : $taskClass, + 'type' => $type, + ], \JSON_THROW_ON_ERROR | \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE); + for ($i = 0; $i < $swooleServer->setting['worker_num']; ++$i) + { + $swooleServer->sendMessage($message, $i); + } + break; + case CronTaskType::TASK: + $cronManager->getTaskCallable($task->getId(), $task->getTask(), $type)($task->getId(), $task->getData()); + break; + case CronTaskType::PROCESS: + $cronManager->getTaskCallable($task->getTask(), $task->getTask(), $type)($task->getId(), $task->getData()); + break; + case CronTaskType::CRON_PROCESS: + /** @var \Imi\Cron\CronWorker $cronWorker */ + $cronWorker = App::getBean('CronWorker'); + $cronWorker->exec($task->getId(), $task->getData(), $task->getTask(), $type); + break; + } + } + catch (\Throwable $th) + { + Log::error($th); } } } diff --git a/src/Db/Db.php b/src/Db/Db.php index 126aaa0cf..850245603 100644 --- a/src/Db/Db.php +++ b/src/Db/Db.php @@ -333,7 +333,7 @@ public static function exec(string $sql, array $bindValues = [], ?string $poolNa /** * 执行 SQL 返回结果. */ - public static function select(string $sql, array $bindValues = [], ?string $poolName = null, int $queryType = QueryType::WRITE): ?IResult + public static function select(string $sql, array $bindValues = [], ?string $poolName = null, int $queryType = QueryType::READ): ?IResult { $db = self::getInstance($poolName, $queryType); if ($bindValues) diff --git a/src/Model/Model.php b/src/Model/Model.php index 28e457ee5..38a0493ce 100644 --- a/src/Model/Model.php +++ b/src/Model/Model.php @@ -9,7 +9,6 @@ use Imi\Db\Db; use Imi\Db\Query\Interfaces\IQuery; use Imi\Db\Query\Interfaces\IResult; -use Imi\Db\Query\QueryType; use Imi\Db\Query\Raw; use Imi\Db\Query\Result; use Imi\Event\Event; @@ -227,7 +226,7 @@ public static function exists(...$ids): bool } } - return (bool) Db::select('select exists(' . $query->buildSelectSql() . ')', $query->getBinds(), static::__getMeta(static::__getRealClassName())->getDbPoolName(), QueryType::READ)->getScalar(); + return (bool) Db::select('select exists(' . $query->buildSelectSql() . ')', $query->getBinds(), static::__getMeta(static::__getRealClassName())->getDbPoolName())->getScalar(); } /**