Fixed issue Crons running for tenants
This commit is contained in:
@@ -17,7 +17,6 @@ class CronTaskHandleProvider extends CommonController
|
||||
$now = Carbon::now();
|
||||
|
||||
$tenants = Tenant::where('has_active_instance', true)->get();
|
||||
|
||||
foreach ($tenants as $tenant) {
|
||||
app()->instance('tenant', $tenant);
|
||||
$this->runTenantTasks($tenant, $now);
|
||||
@@ -31,7 +30,6 @@ class CronTaskHandleProvider extends CommonController
|
||||
|
||||
private function runTenantTasks(Tenant $tenant, Carbon $now) {
|
||||
$tasks = CronTask::all();
|
||||
|
||||
foreach ($tasks as $task) {
|
||||
|
||||
// --- Every-Time Tasks ---
|
||||
@@ -41,11 +39,12 @@ class CronTaskHandleProvider extends CommonController
|
||||
|
||||
// --- Daily Tasks ---
|
||||
if ($task->execution_type === CronTaskType::CRON_TASK_TYPE_DAILY) {
|
||||
$tenantLastRun = $task->last_run?->get($tenant->slug);
|
||||
|
||||
$scheduledTime = \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d ') . $task->schedule_time);
|
||||
$now = Carbon::now();
|
||||
|
||||
|
||||
$alreadyRunToday = $task->last_run?->isToday() ?? false;
|
||||
$alreadyRunToday = $tenantLastRun == null ? true : $tenantLastRun->isToday() ?? false;
|
||||
|
||||
if (!$alreadyRunToday && $now >= $scheduledTime) {
|
||||
$this->runTask($task);
|
||||
@@ -59,14 +58,18 @@ class CronTaskHandleProvider extends CommonController
|
||||
$logger = $this->taskLogger($task->name, app('tenant'));
|
||||
app()->instance('taskLogger', $logger);
|
||||
|
||||
|
||||
$taskClass = "\\App\\Tasks\\" . $task->name;
|
||||
if (class_exists($taskClass)) {
|
||||
$instance = new $taskClass();
|
||||
$instance->handle();
|
||||
$lastRun = $task->last_run;
|
||||
if ($lastRun === null) {
|
||||
$lastRun = [];
|
||||
}
|
||||
|
||||
$lastRun[app('tenant')->slug] = now();
|
||||
// Update last_run
|
||||
$task->last_run = now();
|
||||
$task->last_run = $lastRun;
|
||||
$task->save();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user