plinker / tasks
Requires
- league/climate: ^3.2
- plinker/core: >=0.1
- dev-master
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.6.23
- v0.6.22
- v0.6.21
- v0.6.20
- v0.6.19
- v0.6.18
- v0.6.17
- v0.6.16
- v0.6.15
- v0.6.14
- v0.6.13
- v0.6.12
- v0.6.11
- v0.6.10
- v0.6.9
- v0.6.8
- v0.6.7
- v0.6.6
- v0.6.5
- v0.6.4
- v0.6.3
- v0.6.2
- v0.6.1
- v0.6.0
- v0.5.0
- v0.4.5
- v0.4.4
- v0.4.3
- v0.4.2
- v0.4.1
- v0.4.0
- v0.3.3
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.1
- v0.1.0
- v0.0.5
- v0.0.4
- v0.0.3
- v0.0.2
- v0.0.1
This package is not auto-updated.
Last update: 2024-09-15 03:13:48 UTC
README
任务组件允许您编写由守护进程完成的代码任务,这可以使您创建一个用于控制服务器集群任务的单一接口。
安装
使用以下命令通过composer安装此包
$ composer require plinker/tasks
CRON守护进程
您应该创建一个将被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');
然后添加一个cron任务
@reboot while sleep 1; do cd /var/www/html/examples/tasks && /usr/bin/php run.php ; done
客户端
创建客户端实例的步骤如下
<?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'
]);
方法
设置完成后,您可以通过其命名空间调用类及其方法。
创建
创建新的任务,同名任务将被覆盖。
调用
$client->tasks->create( 'Hello World', '<?php echo "Hello World";', 'php', 'My Hello World task', [] )
响应
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
)
更新
更新任务。
调用
$client->tasks->update( 1 'Hello World', '<?php echo "Hello World - Updated";', 'php', 'My Hello World task', [] )
响应
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
)
获取
获取任务。
调用
$client->tasks->get('Hello World');
响应(RedBean对象)
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] =>
)
通过ID获取
通过ID获取任务。
调用
$client->tasks->getById(1);
响应(RedBean对象)
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] =>
)
获取任务源
获取所有任务。
调用
$client->tasks->getTaskSources();
响应(RedBean对象)
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] =>
)
)
)
状态
获取任务的状态。
调用
$client->tasks->status('Hello World');
响应
running
运行次数
获取特定任务的运行次数。
调用
$client->tasks->runCount('Hello World');
响应
100
删除
通过名称删除任务。
调用
$client->tasks->remove('Hello World');
响应
true
通过ID删除
通过ID删除任务。
调用
$client->tasks->removeById(1);
响应
true
获取任务日志
任务日志是在任务运行时创建的条目。使用此方法获取数据。
调用
$result = $client->tasks->getTasksLog();
响应
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] =>
)
)
)
获取任务日志计数
任务日志是在任务运行时创建的条目。使用此方法获取计数。
调用
$result = $client->tasks->getTasksLogCount();
响应
1
删除任务日志
从任务中删除任务日志。
调用
$result = $client->tasks->removeTasksLog(1);
响应
true
获取任务
任务日志是在任务运行时创建的条目。使用此方法获取数据。
调用
$result = $client->tasks->getTasks();
响应
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 once $client->tasks->run('Hello World', [], 0); // run every day $client->tasks->run('Hello World', [], 86400);
响应
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
)
立即运行
立即运行任务(任务不会放入任务表供守护进程运行),并且作为web服务器用户
运行。
调用
$client->tasks->runNow('Hello World');
响应
Hello World
清除
删除所有任务。
调用
$result = $client->tasks->clear();
响应
true
重置
删除数据库。请谨慎使用。
调用
$result = $client->tasks->reset();
响应
true
测试
此组件没有设置测试。
贡献
有关详细信息,请参阅CONTRIBUTING。
安全
如果您发现任何与安全相关的问题,请通过https://cherone.co.uk与我联系,而不是使用问题跟踪器。
致谢
链接
想看看使用此组件的示例项目吗?
开发鼓励
如果您使用此项目并从中获利或想表示感谢,请随意捐赠https://www.paypal.me/lcherone,谢谢。
赞助商
让您的公司或姓名在文档中和每个GitHub存储库中列出,有关更多信息,请联系我https://cherone.co.uk。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。
有关其他组件的信息,请参阅组织页面。