stylers / laravel-task-manager
此包是为了在没有 artisan 的情况下运行任务而提供的解决方案,因为一些服务器(如共享主机)禁用了 proc_open & proc_close PHP 模块。
6.0.0
2024-01-03 15:35 UTC
Requires
- php: >=8.1
- illuminate/support: ^10
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.18 || ^3.44
- orchestra/testbench: ^8.0
- phpmd/phpmd: ^2.15
- phpunit/phpunit: ^7.5.15 || ^8.4 || ^9.5.4 || ^10.0
This package is auto-updated.
Last update: 2024-09-03 16:56:34 UTC
README
Laravel 版本兼容性
要求
- PHP >= 8.0
- Laravel >= 9.x
安装
composer require stylers/laravel-task-manager
如何测试
docker run -it --rm -v $PWD:/app -w /app composer sh
composer install
./vendor/bin/phpunit
使用方法
TaskTimer 特性使用 Laravel 的调度频率选项
- 将接口和特性添加到类实现中,并为命令入口点添加 handle 方法
use Illuminate\Console\Command; use Stylers\TaskManager\Contracts\TaskTimerInterface; use Stylers\TaskManager\Traits\TaskTimer; class CommandTask extends Command implements TaskTimerInterface { use TaskTimer; public function handle() { // } }
- 将 CommandTask 添加到 TaskManager 中
use Illuminate\Support\ServiceProvider; use Stylers\TaskManager\Console\TaskManager; use Stylers\TaskManager\Tests\Fixtures\CommandTask; class ScheduleServiceProvider extends ServiceProvider { public function boot() { parent::boot(); $this->app->booted(function () { $scheduler = app(TaskManager::class); // Single task adding $scheduler->addTasks( (new CommandTask())->dailyAt('6:00') ); // ---- OR ---- // Multiple task adding in same time $scheduler->bulkAddTasks([ (new CommandTask())->dailyAt('6:00'), (new CommandTask())->weekly(), ]); }); } }
- 在 web.php 中调用的示例
(请随意为端点添加安全检查)
use Stylers\TaskManager\Console\TaskManager; use Illuminate\Support\Facades\Route; Route::get('/cron', static function () { TaskManager::run(); });
- 设置 cron 调用此端点
* * * * * curl -s -X GET -L domain/cron >>/var/log/cron.log 2>&1
特别感谢
- WebInvention (为此篇博客)