This commit is contained in:
as2252258@163.com
2021-03-26 01:01:21 +08:00
parent 0cbb2b04e4
commit d38c66a92d
8 changed files with 200 additions and 159 deletions
+69
View File
@@ -0,0 +1,69 @@
<?php
namespace Snowflake\Crontab;
use Snowflake\Abstracts\Component;
use Snowflake\Snowflake;
use Exception;
/**
* Class Producer
* @package Snowflake\Abstracts
*/
class Producer extends Component
{
const CRONTAB_KEY = 'system:crontab';
/**
* @param Crontab $crontab
* @param $executeTime
* @throws Exception
*/
public function dispatch(Crontab $crontab)
{
$redis = Snowflake::app()->getRedis();
$name = md5($crontab->getName());
$redis->set('crontab:' . $name, swoole_serialize($crontab));
$tickTime = time() + $crontab->getTickTime();
$redis->zAdd(self::CRONTAB_KEY, $tickTime, $crontab->getName());
}
/**
* @param string $name
* @throws Exception
*/
public function clear(string $name)
{
$redis = Snowflake::app()->getRedis();
$redis->zRem(self::CRONTAB_KEY, $name);
$redis->del('crontab:' . md5($name));
}
/**
* @throws Exception
*/
public function clearAll()
{
$redis = Snowflake::app()->getRedis();
$data = $redis->zRange(self::CRONTAB_KEY, 0, -1);
$redis->del(self::CRONTAB_KEY);
foreach ($data as $datum) {
$redis->del('crontab:' . md5($datum));
}
$redis->release();
}
}