Мне нужно установить кэш в очередь, в моем списке я получаю отсчеты категорий продуктов из кэша, кэш будет сбрасываться каждые 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