/** * 取得当前时间需要执行的一个 Cron Task,注意这里是 load 方法,所以返回的结果是可以做 CRUD 操作的s * * @param int $currentTime 当前时间 * * @return \Core\Service\Cron\DataMapper|null */ public static function loadNextUnRunCronTask($currentTime) { $cronTaskInfo = ShareCache::get(self::getCronTaskCacheKey()); // 缓存表明目前没有任务,所以我们也就没必要再去查询数据库了 if (self::$cronTaskNoTaskMagic === $cronTaskInfo) { return null; } // 当前任务还没到执行的时候 if (is_array($cronTaskInfo) && $cronTaskInfo['task_time'] > $currentTime) { return null; } // 从数据库中取得任务 $cronTaskService = new CronTaskService(); $cronTask = $cronTaskService->loadNextUnRunCronTask($currentTime); // 数据库里面也没有任务,设置缓存为“无任务”就不用老去查找数据库了 if ($cronTask->isEmpty()) { ShareCache::set(self::getCronTaskCacheKey(), self::$cronTaskNoTaskMagic, 3600); return null; } // 这个任务还没到执行的时间,放到缓存里面 if ($cronTask->task_time > $currentTime) { ShareCache::set(self::getCronTaskCacheKey(), $cronTask->toArray(), 3600); return null; } // 清除缓存 ShareCache::clear(self::getCronTaskCacheKey()); // 返回需要执行的任务 return $cronTask; }
/** * 清除 goods thumb image 的缓存 * * @param int $goods_id */ public static function clearGoodsGallery($goods_id) { // 参数不对,没有东西可以输出 if ($goods_id <= 0) { return; } $cacheId = static::makeGoodsGalleryCacheId($goods_id); ShareCache::clear($cacheId); }
public function removeOptionValueById($optionId) { $metaService = new MetaService(); $optionItem = $metaService->loadMetaById($optionId); if ($optionItem->isEmpty()) { return; } if ($optionItem->meta_type != OptionDbDriver::META_TYPE) { // 如果不是 option 数据抛出异常 throw new \InvalidArgumentException('optionId[' . $optionId . '] is not ' . OptionDbDriver::META_TYPE); } $optionItem->erase(); // 清除缓存 ShareCache::clear($this->makeCacheId($optionItem->meta_key)); }