This commit is contained in:
as2252258@163.com
2021-03-20 02:33:50 +08:00
parent 25a09a379a
commit 06422d5073
3 changed files with 253 additions and 231 deletions
+32 -41
View File
@@ -4,6 +4,8 @@
namespace Snowflake\Abstracts;
use Snowflake\Core\Json;
use Snowflake\Process\CrontabProcess;
use Snowflake\Snowflake;
use Exception;
@@ -16,51 +18,40 @@ class Crontab extends Component
{
/**
* @param \Snowflake\Crontab $crontab
* @param $executeTime
* @throws Exception
*/
public function dispatch(\Snowflake\Crontab $crontab, int $executeTime)
{
$redis = Snowflake::app()->getRedis();
$redis->zAdd('system:crontab', (string)$executeTime, serialize($crontab));
}
/**
* @param \Snowflake\Crontab $crontab
* @param $executeTime
* @throws Exception
*/
public function dispatch(\Snowflake\Crontab $crontab)
{
/** @var CrontabProcess $redis */
$redis = Snowflake::app()->get(CrontabProcess::class);
$redis->write(serialize($crontab));
}
/**
* @param string $name
* @throws Exception
*/
public function clear(string $name)
{
$redis = Snowflake::app()->getRedis();
$data = $redis->zRevRange('system:crontab', 0, -1);
if (empty($data)) {
return;
}
foreach ($data as $datum) {
/** @var \Snowflake\Crontab $crontab */
$crontab = unserialize($datum);
if ($crontab->getName() == $name) {
$redis->zRem('system:crontab', $datum);
}
}
}
/**
* @param string $name
* @throws Exception
*/
public function clear(string $name)
{
/** @var CrontabProcess $redis */
$redis = Snowflake::app()->get(CrontabProcess::class);
$redis->write(Json::encode(['action' => 'clear', 'name' => $name]));
}
/**
* @throws Exception
*/
public function clearAll()
{
$redis = Snowflake::app()->getRedis();
$redis->del('system:crontab');
}
/**
* @throws Exception
*/
public function clearAll()
{
/** @var CrontabProcess $redis */
$redis = Snowflake::app()->get(CrontabProcess::class);
$redis->write(Json::encode(['action' => 'clearAll']));
}
}