antonchaikin / f3-scheduler
Cron-based task scheduler for the Fat-Free Framework (F3)
Installs: 21
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 1
Open Issues: 0
pkg:composer/antonchaikin/f3-scheduler
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/runfor 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
Scheduleto$f3->schedulefor 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/runaccepts only bot/cron-like User-Agents by default. CLI is always allowed.
๐ License
MIT ยฉ Anton Chaikin