Files
kiri-core/System/Abstracts/Crontab.php
T

71 lines
1.3 KiB
PHP
Raw Normal View History

2021-03-19 19:16:12 +08:00
<?php
namespace Snowflake\Abstracts;
2021-03-20 02:33:50 +08:00
use Snowflake\Core\Json;
use Snowflake\Process\CrontabProcess;
2021-03-19 19:16:12 +08:00
use Snowflake\Snowflake;
use Exception;
/**
* Class Crontab
* @package Snowflake\Abstracts
*/
class Crontab extends Component
{
2021-03-22 00:16:40 +08:00
const CRONTAB_KEY = 'system:crontab';
2021-03-19 19:16:12 +08:00
2021-03-20 02:33:50 +08:00
/**
* @param \Snowflake\Crontab $crontab
* @param $executeTime
* @throws Exception
*/
public function dispatch(\Snowflake\Crontab $crontab)
{
2021-03-22 00:16:40 +08:00
$redis = Snowflake::app()->getRedis();
$name = md5($crontab->getName());
$redis->set('crontab:' . $name, serialize($crontab));
2021-03-22 00:25:35 +08:00
$tickTime = time() + $crontab->getTickTime();
2021-03-22 00:16:40 +08:00
$redis->zAdd(self::CRONTAB_KEY, $tickTime, $crontab->getName());
2021-03-20 02:33:50 +08:00
}
/**
* @param string $name
* @throws Exception
*/
public function clear(string $name)
{
2021-03-22 00:16:40 +08:00
$redis = Snowflake::app()->getRedis();
$redis->zRem(self::CRONTAB_KEY, $name);
$redis->del('crontab:' . md5($name));
2021-03-20 02:33:50 +08:00
}
/**
* @throws Exception
*/
public function clearAll()
{
2021-03-22 00:16:40 +08:00
$redis = Snowflake::app()->getRedis();
2021-03-22 00:49:45 +08:00
$data = $redis->zRange(self::CRONTAB_KEY, 0, -1);
2021-03-22 00:16:40 +08:00
$redis->del(self::CRONTAB_KEY);
foreach ($data as $datum) {
$redis->del('crontab:' . md5($datum));
}
2021-03-22 00:48:35 +08:00
$redis->release();
2021-03-20 02:33:50 +08:00
}
2021-03-19 19:16:12 +08:00
}