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.
plinker/tasks 适用场景与选型建议
plinker/tasks 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 555 次下载、GitHub Stars 达 0, 最近一次更新时间为 2017 年 07 月 29 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 plinker/tasks 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 plinker/tasks 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 555
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 7
- 依赖项目数: 5
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-07-29