(new TestDelayTask(4))->startAfter(900); (new TestDelayTask(4))->startAfter(120); (new TestDelayTask(4))->startAfter(600); (new TestDelayTask(3))->startAt(158120384); (new TestDelayTask(3))->startAt(158420380); (new TestDelayTask(3))->startAt(158120900);
执行代码:
class DelayTaskTask { const QueneName = 'delayTask'; private $currentTime; private $once = 5; public function run() { $this->currentTime = time(); error_reporting(error_reporting() & ~E_WARNING); while (true) { // 每次取出5条 $list = RedisManager::getRedis()->zRange(self::QueneName, 0, $this->once, true); if (!empty($list)) { foreach ($list as $val=>$score) { if ($score < $this->currentTime) { unserialize($val)->run(); RedisManager::getRedis()->zDelete(self::QueneName, $val); } else { break 2; } } } else { break; } } } } (new DelayTaskTask())->run();