Example #1
0
 /**
  * 取得当前时间需要执行的一个 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;
 }
Example #2
0
 /**
  * 清除 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);
 }
Example #3
0
 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));
 }