qrotux / phalcon-cron
Phalcon的Cron组件。
0.2.1
2019-01-08 04:42 UTC
Requires
- php: >= 5.6
- ext-phalcon: >= 2.0.0
- mtdowling/cron-expression: ~1.0
Requires (Dev)
- codeception/codeception: 2.1.2
- codeclimate/php-test-reporter: dev-master
- phpunit/php-code-coverage: ~2.0
- squizlabs/php_codesniffer: ~3.0
This package is not auto-updated.
Last update: 2024-09-26 06:54:53 UTC
README
Phalcon的Cron组件。
安装
使用Composer安装
{ "require": { "sidroberts/phalcon-cron": "dev-master" } }
您还需要将console
添加到DI中
$di = new \Phalcon\Di(); // ... $console = new \Phalcon\Cli\Console(); // ... $di->setShared("console", $console); // ... $console->handle($arguments);
示例
Crontab
* * * * * /usr/bin/php /path/to/cli.php cron
DI
$di->set( "cron", function () { $cron = new \Sid\Phalcon\Cron\Manager(); $cron->add( new \Sid\Phalcon\Cron\Job\Callback( "* * * * *", function () { // ... } ) ); $cron->add( new \Sid\Phalcon\Cron\Job\Phalcon( "0 * * * *", [ "task" => "task", "action" => "action", "params" => "params" ] ) ); $cron->add( new \Sid\Phalcon\Cron\Job\System( "* 0 * * *", "sh backup.sh" ) ); return $cron; } );
CLI任务
class CronTask extends \Phalcon\Cli\Task { public function mainAction() { $this->cron->runInBackground(); } }
前台与后台
在前台运行任务(顺序执行)
Job1 -------->
Job2 ----------------->
Job3 ---->
在后台运行任务(并行执行)
Job1 -------->
Job2 ----------------->
Job3 ---->
对于大多数应用程序,建议使用->runInBackground()
,因为这通常是Cron实现的方式,并且通常更快。如果您特别需要访问每个Cron任务的输出,请使用->runInForeground()
。
->runInBackground()
返回一个进程实例数组。->runInForeground()
返回一个输出数组。
等待、终止和杀死
默认情况下,所有后台进程都会注册一个关闭函数,该函数强制PHP脚本在关闭之前等待任务完成。如果需要等待进程完成,可以在进程实例上调用->wait()
。
您还可以在进程上使用->terminate()
和->kill()
来发送终止和杀死信号。
->wait()
、->terminate()
和->kill()
也适用于Manager实例,并且将等待、终止或杀死所有进程。
在自定义时间运行任务
通过将\DateTime
传递给->getDueJobs()
,您可以查看在特定时间到期的任务
$datetime = new \DateTime("2015-01-01 00:00:00"); $cron->getDueJobs($datetime);
您还可以将\DateTime传递给->runInForeground()
/->runInBackground()
来运行在特定时间到期的任务。
$datetime = new \DateTime("2015-01-01 00:00:00"); $cron->runInBackground($datetime);
从Crontab添加任务
您还可以从Crontab文件添加任务,例如这个
* * * * * /usr/bin/php /path/to/cli.php cron
$cron = new \Sid\Phalcon\Cron\Manager(); $cron->addCrontab("/path/to/crontab");
从Crontab获取系统任务实例数组
$crontab = new \Sid\Phalcon\Cron\CrontabParser("/path/to/crontab"); $jobs = $crontab->getJobs();