jdlxnl/task

用于运行后台任务的任务和日志

2.0.7 2022-04-05 13:51 UTC

This package is auto-updated.

Last update: 2024-09-05 19:11:18 UTC


README

增加创建任务和任务日志的功能。在horizon中增加一个部分,以便可以查看任务处理时的任务日志。

安装

将此仓库添加到您的composer.json文件中

composer require jdlxnl/task

运行以下命令以设置数据库

php artisan vendor:publish --provider="Jdlx\Slack\JdlxSlackServiceProvider"
php artisan vendor:publish --provider="Jdlx\Task\JdlxTaskServiceProvider"

php artisan migrate

安装horizon

composer require laravel/horizon
php artisan horzion:publish
php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider"

确保将horizon配置更改为

[
...

    'defaults' => [
        'supervisor-1' => [
            'connection' => 'redis',
            'queue' => ['default'],
            'balance' => 'auto',
            'maxProcesses' => 1,
            'memory' => 256,
            'tries' => 1,
            'nice' => 0,
            'timeout' => 900 // set very high, have jobs control their own timeout
        ],
    ],

    'environments' => [
        'production' => [
            'supervisor-1' => [
                'maxProcesses' => 2,
                'balanceMaxShift' => 1,
                'balanceCooldown' => 3,
                'sleep' => 1
            ],
        ],

        'staging' => [
            'supervisor-1' => [
                'maxProcesses' => 1,
            ],
        ],

        'local' => [
            'supervisor-1' => [
                'maxProcesses' => 3,
            ],
        ],
    ]

    ...

 ]

确保将路由添加到API

Route::apiResource('task-log', \Jdlx\Task\Http\Controllers\Api\TaskLogController::class);

Slack

为了支持Slack,确保将以下键添加到.env文件中

SLACK_WEBHOOK=https://hooks.slack.com/services/asd/B01HB2M20asdf4V/s8GCasfsaDJesxH3ZyZuHUx
SLACK_DEFAULT_CHANNEL=my-channel

管理界面

如果您已安装管理界面,可以使用以下方法添加任务日志

php artisan adminui:module:task

客户端

构建客户端应用程序

将以下内容添加到webpack.mix.js中

mix.js('resources/js/tasklog/index.js', 'public/vendor/jdlx/task/app.js').react();

确保将以下包添加到package.json中

{
  "react": "^17.0.1",
  "react-bootstrap": "^1.4.3",
  "react-data-table-component": "^7.0.0-alpha-5",
  "react-dom": "^17.0.1",
  "react-icons": "^4.1.0",
  "react-json-view": "^1.20.4",
  "react-router": "^5.2.0",
  "react-router-dom": "^5.2.0",
  "react-select": "^3.2.0",
  "styled-components": "^5.2.1"
}