# fluent-cart/1.3.21/app/Hooks/Scheduler/AutoSchedules/HourlyScheduler.php

FluentCart A New Era of eCommerce – Faster, Lighter, and Simpler, version 1.3.21. 45 lines.

- Page: https://pluginprobe.com/plugins/fluent-cart/1.3.21/code/app/Hooks/Scheduler/AutoSchedules/HourlyScheduler.php
- Raw: https://pluginprobe.com/plugins/fluent-cart/1.3.21/raw/app/Hooks/Scheduler/AutoSchedules/HourlyScheduler.php
- Modified: 2026-02-25T14:08:24+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/fluent-cart/1.3.21/code/app/Hooks/Scheduler/AutoSchedules/HourlyScheduler.php#L10-L20`.

```php
<?php

namespace FluentCart\App\Hooks\Scheduler\AutoSchedules;

use FluentCart\App\Helpers\Status;
use FluentCart\App\Models\ScheduledAction;
use FluentCart\App\Models\Subscription;

class HourlyScheduler
{
    private $startTimeStamp = null;

    public function register(): void
    {
        add_action('fluent_cart/scheduler/hourly_tasks', [$this, 'handle'], 10);
    }

    public function handle()
    {
        $this->startTimeStamp = time();

        // hourly tasks, remove all completed tasks
        $this->removeCompleteTasks();

        $this->checkAndExpireSubscriptions();
    }


    private function removeCompleteTasks()
    {
        ScheduledAction::query()->where('status', Status::SCHEDULE_COMPLETED)
            ->limit(5000)
            ->delete();
    }

    private function checkAndExpireSubscriptions()
    {
        if ((time() - $this->startTimeStamp) > 60) {
            return;
        }

        Subscription::checkAndExpireSubscriptions();
    }
}

```
