antonchaikin / f3-scheduler
Cron-based task scheduler for the Fat-Free Framework (F3)
v1.0.3
2025-05-28 23:32 UTC
Requires
- php: >=7.4
- bcosca/fatfree: *
- poliander/cron: ^3.1
README
F3Scheduler is a simple cron-style task scheduler plugin for the Fat-Free Framework (F3). It allows you to register periodic tasks using cron expressions and execute them via a route or CLI-safe handler.
๐ Features
- Register tasks using cron expressions or helper methods like
everyMinute()
,hourly()
,daily()
, etc. - Supports callable PHP functions and string commands (executed via
php index.php ...
). - Flexible error handling via
setErrorHandler(...)
. - Built-in route:
GET /cron/schedule/run
for triggering tasks from CRON. - Designed for F3 and easy integration.
๐ Installation
composer require antonchaikin/f3-scheduler
๐งฉ Setup
In your app bootstrap:
\F3Scheduler\F7SchedulePlugin::register();
This will:
- Register the route
GET /cron/schedule/run
- Bind
Schedule
to$f3->schedule
for easy static access
๐งช Usage
Register a task:
$f3->schedule::everyMinute(function () { echo "Run every minute!"; });
Register a shell command:
$f3->schedule::daily("clear-cache");
Custom cron:
$f3->schedule::on("0 0 1 * *", fn() => echo "Run every 1st of month!");
Set error handler:
$f3->schedule::setErrorHandler(function ($e) { error_log("[SCHEDULE ERROR] " . $e->getMessage()); });
Trigger tasks manually (e.g. from cron job):
curl https://your-app.com/cron/schedule/run
โฐ System Cron Setup
To run scheduled tasks every minute, add the following line to your server's crontab:
* * * * * curl -s https://your-app.com/cron/schedule/run > /dev/null 2>&1
Make sure the route /cron/schedule/run
is publicly accessible or secured via IP/user-agent as needed.
๐ Available Methods
everyMinute(callable|string)
everyFiveMinute(callable|string)
everyTenMinutes(callable|string)
everyFifteenMinutes(callable|string)
everyThirtyMinutes(callable|string)
hourly(callable|string)
daily(callable|string)
dailyNoon(callable|string)
weekly(callable|string)
monthly(callable|string)
on(string cronExpression, callable|string)
๐ง Notes
- String tasks will be executed using
php ./index.php {your-command}
. - The route
/cron/schedule/run
accepts only bot/cron-like User-Agents by default. CLI is always allowed.
๐ License
MIT ยฉ Anton Chaikin