как использовать функцию обратного вызова в очереди Laravel - PullRequest
0 голосов
/ 19 июня 2019

Мне нужно установить кэш в очередь, в моем списке я получаю отсчеты категорий продуктов из кэша, кэш будет сбрасываться каждые 24 часа, но у меня более 6 миллионов продуктов, поэтому каждые 24 часа страница занимает слишком много времени для get count, поэтому для этого, если время кеша истекло, нужно запустить очередь и получить данные из кеша. Проблема заключается в необходимости вызова функции обратного вызова в очереди

Это мой код

Это контроллер

$DBConditions = Cache::get($cacheKey, function () {
    return $this->getProductCategoty();
}, true,Cache::1_DAY_TIMEOUT,self::ASYNCVALUE);

This is my cache Helper
 public static function get($key, $function, $cacheSession = false, $timeout = self::ONE_DAY,$Async = false)
    {
        $data = cache($key);
        if (!isset($data)) {
            if(!isset($defaultAsyncValue) || empty($defaultAsyncValue)){
                dispatch(new CallCallback($key,$timeout,$function));
            return array();
            }
        }

        return $data;
    }

This is my Queue handle
public function handle()
    {
        $data=array();
        try {
            $data = call_user_func($this->function); //This is my callback function
        } catch (\Exception $e) {
            self::logMessage('array:- '.print_r($e->getMessage(),true));
        }
        cache([$this->key => $data], $this->timeout);
    }



Need to call that controller`s function to get data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...