2017 © Pedro Peláez
 

library tasks

image

plinker/tasks

  • Wednesday, May 30, 2018
  • by lcherone
  • Repository
  • 1 Watchers
  • 0 Stars
  • 430 Installations
  • PHP
  • 5 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 61 Versions
  • 162 % Grown

The README.md

PlinkerRPC - Tasks

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., (*1)

Install

Require this package with composer using the following command:, (*2)

``` bash $ composer require plinker/tasks, (*3)


## 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** ``` php $client->tasks->create( 'Hello World', '<?php echo "Hello World";', 'php', 'My Hello World task', [] )

Response ``` text 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 ), (*4)


### 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** ``` php $client->tasks->update( 1 'Hello World', '<?php echo "Hello World - Updated";', 'php', 'My Hello World task', [] )

Response ``` text 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 ), (*5)


### Get Get a task. | Parameter | Type | Description | Default | | ---------- | ------------- | ------------- | -------------- | | name | string | Name of task | | **Call** ``` php $client->tasks->get('Hello World');

Response (RedBean Object) ``` text 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 ), (*6)

[__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] => 

), (*7)


### Get By Id Get a task by id. | Parameter | Type | Description | Default | | ---------- | ------------- | ------------- | -------------- | | id | int | Id of task | | **Call** ``` php $client->tasks->getById(1);

Response (RedBean Object) ``` text 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 ), (*8)

[__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] => 

), (*9)


### Get Task Sources Get all tasks. **Call** ``` php $client->tasks->getTaskSources();

Response (RedBean Object) ``` text 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 ), (*10)

        [__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] => 
    )
)

), (*11)


### Status Get the status of a task. | Parameter | Type | Description | Default | | ---------- | ------------- | ------------- | ------------- | | name | string | Name of task | | **Call** ``` php $client->tasks->status('Hello World');

Response ``` text running, (*12)


### Run Count Get the run count of a particular task. | Parameter | Type | Description | Default | | ---------- | ------------- | ------------- | ------------- | | name | string | Name of task | | **Call** ``` php $client->tasks->runCount('Hello World');

Response ``` text 100, (*13)


### Remove Remove a task by its name. | Parameter | Type | Description | Default | | ---------- | ------------- | ------------- | ------------- | | name | string | Name of task | | **Call** ``` php $client->tasks->remove('Hello World');

Response ``` text true, (*14)


### Remove By Id Remove a task by its id. | Parameter | Type | Description | Default | | ---------- | ------------- | ------------- | ------------- | | id | int | Id of task | | **Call** ``` php $client->tasks->removeById(1);

Response ``` text true, (*15)


### 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** ``` php $result = $client->tasks->getTasksLog();

Response ``` text 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] => ), (*16)

        [__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] => 
    )
)

), (*17)


### 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** ``` php $result = $client->tasks->getTasksLogCount();

Response ``` text 1, (*18)


### Remove Tasks Log Remove a task log from the task. | Parameter | Type | Description | Default | | ---------- | ------------- | ------------- | ------------- | | task_id | int | The id of the task | | **Call** ``` php $result = $client->tasks->removeTasksLog(1);

Response ``` text true, (*19)


### 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** ``` php $result = $client->tasks->getTasks();

Response ``` text 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] => ), (*20)

        [__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] => 
    )
)

), (*21)


### 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** ``` php // run once $client->tasks->run('Hello World', [], 0); // run every day $client->tasks->run('Hello World', [], 86400);

Response ``` text 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 ), (*22)


### 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** ``` php $client->tasks->runNow('Hello World');

Response ``` text Hello World, (*23)


### Clear Delete all tasks. **Call** ``` php $result = $client->tasks->clear();

Response ``` text true, (*24)


### Reset Delete database. **Use with caution.** **Call** ``` php $result = $client->tasks->reset();

Response text true, (*25)

Testing

There are no tests setup for this component., (*26)

Contributing

Please see CONTRIBUTING for details., (*27)

Security

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

Credits

Want to see an example project which uses this component?, (*29)

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., (*30)

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., (*31)

License

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

See the organisations page for additional components., (*33)

The Versions