stylers/laravel-task-manager

此包是为了在没有 artisan 的情况下运行任务而提供的解决方案,因为一些服务器(如共享主机)禁用了 proc_open & proc_close PHP 模块。

6.0.0 2024-01-03 15:35 UTC

This package is auto-updated.

Last update: 2024-09-03 16:56:34 UTC


README

Latest Stable Version Total Downloads License Tests codecov Maintainability

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 的调度频率选项

  1. 将接口和特性添加到类实现中,并为命令入口点添加 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()
    {
        //
    }
}
  1. 将 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(),
            ]);
        });
    }
}
  1. 在 web.php 中调用的示例
    (请随意为端点添加安全检查)
use Stylers\TaskManager\Console\TaskManager;
use Illuminate\Support\Facades\Route;

Route::get('/cron', static function () {
    TaskManager::run();
});
  1. 设置 cron 调用此端点
* * * * * curl -s -X GET -L domain/cron >>/var/log/cron.log 2>&1

特别感谢