定制 plinker/tasks 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

plinker/tasks

Composer 安装命令:

composer require plinker/tasks

包简介

README 文档

README

The tasks component allows you to write code based tasks which are completed by a daemon, this could allow you to create a single interface to control a cluster of servers tasks.

Install

Require this package with composer using the following command:

$ composer require plinker/tasks

CRON Daemon

You should create a file which will be run via cron:

cron.php

<?php
require 'vendor/autoload.php';

if (php_sapi_name() != 'cli') {
    header('HTTP/1.0 403 Forbidden');
    exit('CLI script');
}

$task = new Plinker\Tasks\Runner([
    'database' => [
        'dsn'      => 'sqlite:./.plinker/database.db',
        'host'     => '',
        'name'     => '',
        'username' => '',
        'password' => '',
        'freeze'   => false,
        'debug'    => false
    ],
    'debug'       => true,
    'log'         => true,
    'sleep_time'  => 2,
    'tmp_path'    => './.plinker',
    'auto_update' => 86400
]);

$task->daemon('Queue');

Then add a cron job:

  • @reboot while sleep 1; do cd /var/www/html/examples/tasks && /usr/bin/php run.php ; done

Client

Creating a client instance is done as follows:

<?php
require 'vendor/autoload.php';

/**
 * Initialize plinker client.
 *
 * @param string $server - URL to server listener.
 * @param string $config - server secret, and/or a additional component data
 */
$client = new \Plinker\Core\Client(
    'http://example.com/server.php',
    [
        'secret' => 'a secret password',
        // database connection
        'database' => [
            'dsn'      => 'sqlite:./.plinker/database.db',
            'host'     => '',
            'name'     => '',
            'username' => '',
            'password' => '',
            'freeze'   => false,
            'debug'    => false,
        ],
        // displays output to task runner console
        'debug' => true,
    
        // daemon sleep time
        'sleep_time' => 1,
        'tmp_path'   => './.plinker'
    ]
);

// or using global function
$client = plinker_client('http://example.com/server.php', 'a secret password', [
    // database connection
    'database' => [
        'dsn'      => 'sqlite:./.plinker/database.db',
        'host'     => '',
        'name'     => '',
        'username' => '',
        'password' => '',
        'freeze'   => false,
        'debug'    => false,
    ],
    // displays output to task runner console
    'debug' => true,

    // daemon sleep time
    'sleep_time' => 1,
    'tmp_path'   => './.plinker'
]);

Methods

Once setup, you call the class though its namespace to its method.

Create

Create a new task, tasks with the same name will be overwritten.

Parameter Type Description Default
name string Name of task
source string Task source code
type string Type of task (php|bash)
description string Description of task
params array Default params passed to task

Call

$client->tasks->create(
    'Hello World',
    '<?php echo "Hello World";',
    'php',
    'My Hello World task',
    []
)

Response

Array
(
    [id] => 1
    [name] => Hello World
    [source] =>  cda22aa1e43992c1103a9f8a386b5dcb
    [type] => php
    [description] => My Hello World task
    [params] => 
    [updated] => 2018-01-01 00:00:00
    [created] => 2018-01-01 00:00:00
)

Update

Update a task.

Parameter Type Description Default
id int Id of task
name string Name of task
source string Task source code
type string Type of task (php|bash)
description string Description of task
params array Default params passed to task

Call

$client->tasks->update(
    1
    'Hello World',
    '<?php echo "Hello World - Updated";',
    'php',
    'My Hello World task',
    []
)

Response

Array
(
    [id] => 1
    [name] => Hello World - Updated
    [source] =>  cda22aa1e43992c1103a9f8a386b5dcb
    [type] => php
    [description] => My Hello World task
    [params] => 
    [updated] => 2018-01-01 00:00:00
    [created] => 2018-01-01 00:00:00
)

Get

Get a task.

Parameter Type Description Default
name string Name of task

Call

$client->tasks->get('Hello World');

Response (RedBean Object)

RedBeanPHP\OODBBean Object
(
    [properties:protected] => Array
        (
            [id] => 1
            [name] => Hello World
            [source] =>  cda22aa1e43992c1103a9f8a386b5dcb
            [type] => php
            [description] => My Hello World task
            [params] => 
            [updated] => 2018-01-01 00:00:00
            [created] => 2018-01-01 00:00:00
        )

    [__info:protected] => Array
        (
            [type] => tasksource
            [sys.id] => id
            [sys.orig] => Array
                (
                    [id] => 1
                    [name] => Hello World
                    [source] =>  cda22aa1e43992c1103a9f8a386b5dcb
                    [type] => php
                    [description] => My Hello World task
                    [params] => 
                    [updated] => 2018-01-01 00:00:00
                    [created] => 2018-01-01 00:00:00
                )

            [tainted] => 
            [changed] => 
            [changelist] => Array
                (
                )

            [model] => 
        )

    [beanHelper:protected] => RedBeanPHP\BeanHelper\SimpleFacadeBeanHelper Object
        (
        )

    [fetchType:protected] => 
    [withSql:protected] => 
    [withParams:protected] => Array
        (
        )

    [aliasName:protected] => 
    [via:protected] => 
    [noLoad:protected] => 
    [all:protected] => 
)

Get By Id

Get a task by id.

Parameter Type Description Default
id int Id of task

Call

$client->tasks->getById(1);

Response (RedBean Object)

RedBeanPHP\OODBBean Object
(
    [properties:protected] => Array
        (
            [id] => 1
            [name] => Hello World
            [source] =>  cda22aa1e43992c1103a9f8a386b5dcb
            [type] => php
            [description] => My Hello World task
            [params] => 
            [updated] => 2018-01-01 00:00:00
            [created] => 2018-01-01 00:00:00
        )

    [__info:protected] => Array
        (
            [type] => tasksource
            [sys.id] => id
            [sys.orig] => Array
                (
                    [id] => 1
                    [name] => Hello World
                    [source] =>  cda22aa1e43992c1103a9f8a386b5dcb
                    [type] => php
                    [description] => My Hello World task
                    [params] => 
                    [updated] => 2018-01-01 00:00:00
                    [created] => 2018-01-01 00:00:00
                )

            [tainted] => 
            [changed] => 
            [changelist] => Array
                (
                )

            [model] => 
        )

    [beanHelper:protected] => RedBeanPHP\BeanHelper\SimpleFacadeBeanHelper Object
        (
        )

    [fetchType:protected] => 
    [withSql:protected] => 
    [withParams:protected] => Array
        (
        )

    [aliasName:protected] => 
    [via:protected] => 
    [noLoad:protected] => 
    [all:protected] => 
)

Get Task Sources

Get all tasks.

Call

$client->tasks->getTaskSources();

Response (RedBean Object)

Array
(
    [1] => RedBeanPHP\OODBBean Object
        (
            [properties:protected] => Array
                (
                    [id] => 1
                    [name] => Hello World
                    [source] =>  cda22aa1e43992c1103a9f8a386b5dcb
                    [type] => php
                    [description] => My Hello World task
                    [params] => 
                    [updated] => 2018-01-01 00:00:00
                    [created] => 2018-01-01 00:00:00
                )
        
            [__info:protected] => Array
                (
                    [type] => tasksource
                    [sys.id] => id
                    [sys.orig] => Array
                        (
                            [id] => 1
                            [name] => Hello World
                            [source] =>  cda22aa1e43992c1103a9f8a386b5dcb
                            [type] => php
                            [description] => My Hello World task
                            [params] => 
                            [updated] => 2018-01-01 00:00:00
                            [created] => 2018-01-01 00:00:00
                        )
        
                    [tainted] => 
                    [changed] => 
                    [changelist] => Array
                        (
                        )
        
                    [model] => 
                )
        
            [beanHelper:protected] => RedBeanPHP\BeanHelper\SimpleFacadeBeanHelper Object
                (
                )
        
            [fetchType:protected] => 
            [withSql:protected] => 
            [withParams:protected] => Array
                (
                )
        
            [aliasName:protected] => 
            [via:protected] => 
            [noLoad:protected] => 
            [all:protected] => 
        )
    )
)

Status

Get the status of a task.

Parameter Type Description Default
name string Name of task

Call

$client->tasks->status('Hello World');

Response

running

Run Count

Get the run count of a particular task.

Parameter Type Description Default
name string Name of task

Call

$client->tasks->runCount('Hello World');

Response

100

Remove

Remove a task by its name.

Parameter Type Description Default
name string Name of task

Call

$client->tasks->remove('Hello World');

Response

true

Remove By Id

Remove a task by its id.

Parameter Type Description Default
id int Id of task

Call

$client->tasks->removeById(1);

Response

true

Get Tasks Log

Task logs are entries created, when a task is run. Use this method to get the data.

Parameter Type Description Default
tasksource_id int The id of the task source (optional)

Call

$result = $client->tasks->getTasksLog();

Response

Array
(
    [1] => RedBeanPHP\OODBBean Object
        (
            [properties:protected] => Array
                (
                    [id] => 1
                    [name] => Hello World
                    [params] => []
                    [repeats] => 1
                    [completed] => 0
                    [sleep] => 1
                    [tasksource_id] => 1
                    [run_last] => 2018-01-01 00:00:00
                    [run_next] => 2018-01-01 00:00:00
                    [run_count] => 6
                    [result] => 
                    [tasksource] => 
                )

            [__info:protected] => Array
                (
                    [type] => tasks
                    [sys.id] => id
                    [sys.orig] => Array
                        (
                            [id] => 1
                            [name] => Hello World
                            [params] => []
                            [repeats] => 1
                            [completed] => 0
                            [sleep] => 1
                            [tasksource_id] => 1
                            [run_last] => 2018-01-01 00:00:00
                            [run_next] => 2018-01-01 00:00:00
                            [run_count] => 6
                            [result] => 
                            [tasksource] => 
                        )

                    [tainted] => 
                    [changed] => 
                    [changelist] => Array
                        (
                        )

                    [model] => 
                )

            [beanHelper:protected] => RedBeanPHP\BeanHelper\SimpleFacadeBeanHelper Object
                (
                )

            [fetchType:protected] => 
            [withSql:protected] => 
            [withParams:protected] => Array
                (
                )

            [aliasName:protected] => 
            [via:protected] => 
            [noLoad:protected] => 
            [all:protected] => 
        )
    )
)

Get Tasks Log Count

Task logs are entries created, when a task is run. Use this method to get the counts.

Parameter Type Description Default
tasksource_id int The id of the task (optional)

Call

$result = $client->tasks->getTasksLogCount();

Response

1

Remove Tasks Log

Remove a task log from the task.

Parameter Type Description Default
task_id int The id of the task

Call

$result = $client->tasks->removeTasksLog(1);

Response

true

Get Tasks

Task logs are entries created, when a task is run. Use this method to get the data.

Parameter Type Description Default
task_id int The id of the task (optional)

Call

$result = $client->tasks->getTasks();

Response

Array
(
    [1] => RedBeanPHP\OODBBean Object
        (
            [properties:protected] => Array
                (
                    [id] => 1
                    [name] => Hello World
                    [params] => []
                    [repeats] => 1
                    [completed] => 0
                    [sleep] => 1
                    [tasksource_id] => 1
                    [run_last] => 2018-01-01 00:00:00
                    [run_next] => 2018-01-01 00:00:00
                    [run_count] => 6
                    [result] => 
                    [tasksource] => 
                )

            [__info:protected] => Array
                (
                    [type] => tasks
                    [sys.id] => id
                    [sys.orig] => Array
                        (
                            [id] => 1
                            [name] => Hello World
                            [params] => []
                            [repeats] => 1
                            [completed] => 0
                            [sleep] => 1
                            [tasksource_id] => 1
                            [run_last] => 2018-01-01 00:00:00
                            [run_next] => 2018-01-01 00:00:00
                            [run_count] => 6
                            [result] => 
                            [tasksource] => 
                        )

                    [tainted] => 
                    [changed] => 
                    [changelist] => Array
                        (
                        )

                    [model] => 
                )

            [beanHelper:protected] => RedBeanPHP\BeanHelper\SimpleFacadeBeanHelper Object
                (
                )

            [fetchType:protected] => 
            [withSql:protected] => 
            [withParams:protected] => Array
                (
                )

            [aliasName:protected] => 
            [via:protected] => 
            [noLoad:protected] => 
            [all:protected] => 
        )
    )
)

Run

Place task entry in tasking table for deamon to run.

Parameter Type Description Default
name string Name of the task ``
params array Array of values which are passed to task ``
sleep int Sleep time between iterations, if 0 its run once 0

Call

// run once
$client->tasks->run('Hello World', [], 0);

// run every day
$client->tasks->run('Hello World', [], 86400);

Response

Array
(
    [id] => 1
    [name] => Hello World
    [params] => []
    [repeats] => 1
    [completed] => 0
    [sleep] => 86400
    [tasksource_id] => 1
    [run_last] => 2018-01-01 00:00:00
    [run_next] => 2018-01-01 00:00:00
    [run_count] => 10
    [result] => Hello World
)

Run Now

Run a task now (task is not placed in tasking table for deamon to run), and run as the web server user.

Parameter Type Description Default
name string Name of the task ``

Call

$client->tasks->runNow('Hello World');

Response

Hello World

Clear

Delete all tasks.

Call

$result = $client->tasks->clear();

Response

true

Reset

Delete database. Use with caution.

Call

$result = $client->tasks->reset();

Response

true

Testing

There are no tests setup for this component.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please contact me via https://cherone.co.uk instead of using the issue tracker.

Credits

Links

Want to see an example project which uses this component?

Development Encouragement

If you use this project and make money from it or want to show your appreciation, please feel free to make a donation https://www.paypal.me/lcherone, thanks.

Sponsors

Get your company or name listed throughout the documentation and on each github repository, contact me at https://cherone.co.uk for further details.

License

The MIT License (MIT). Please see License File for more information.

See the organisations page for additional components.

统计信息

  • 总下载量: 555
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 5
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-07-29

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固