public function clearCacheSection($block_id, $section_id) { $fullCode = $this->getFullCode($section_id); $cacheDriver = new \Doctrine\Common\Cache\ApcuCache(); $nameSpace = 'SectionAction_dev_' . $block_id; $cacheDriver->setNamespace($nameSpace); $cacheDriver->delete($fullCode); $nameSpace = 'SectionAction_prod_' . $block_id; $cacheDriver->setNamespace($nameSpace); $cacheDriver->delete($fullCode); }
public function SectionsMenu($options) { /* * Настроки кеширования */ $env = $this->container->getParameter("kernel.environment"); $cacheDriver = new \Doctrine\Common\Cache\ApcuCache(); $namespace = 'menu_section_' . $env . '_' . $options['BLOCK_ID']; $cacheDriver->setNamespace($namespace); // засекаем время $time_start = microtime(1); /* * Добавляем текущую страницу в id кеша */ $request = $this->container->get('request_stack')->getMasterRequest(); $routeParams = $request->attributes->get('_route_params'); $currentCode = false; if (array_key_exists('SECTION_CODE', $routeParams)) { $currentCode = trim($routeParams['SECTION_CODE'], '/'); } //$currentCode = trim($routeParams['CODE'], '/'); $options['@currentCode'] = $currentCode; // id кеша $cacheId = json_encode($options); if ($fooString = $cacheDriver->fetch($cacheId)) { //if (false) { /* * Выдаем результат из кеша */ $result = unserialize($fooString); } else { /* * Генерируем результат */ $SectionClass = $this->container->get('SectionClass'); $tree = $SectionClass->SectionsList(array('block_id' => $options['BLOCK_ID'])); //echo '<pre>' . print_r('tree on SectionMenu', true) . '</pre>'; //echo '<pre>' . print_r($tree, true) . '</pre>'; $factory = new MenuFactory(); $menu = $factory->createItem('root'); //echo '<pre>' . print_r($routeName, true) . '</pre>'; //echo '<pre>' . print_r($routeParams, true) . '</pre>'; $this->generateMenuFromTree($tree, $menu, $options['route'], $currentCode); $menuRenderer = $this->getMenuRenderer(); $result = $menuRenderer->render($menu, array('template' => $options['template'], 'currentAsLink' => false)); /* * Сохраняем результат в кеш */ $cacheDriver->save($cacheId, serialize($result)); } echo $result; $time_end = microtime(1); $time = number_format(($time_end - $time_start) * 1000, 2); //echo $time.' мс'; }
public function ElementsListAction($params, Request $request, $PAGE = 1) { if (is_numeric($PAGE) === false || $PAGE < 1) { throw $this->createNotFoundException('Не может быть страницы меньше нуля для постраничной навигации и должно быть числом'); } if ($this->checkConstruction()) { return $this->constructionResponse(); } $logger = $this->get('logger'); /** * Переменные */ $response = new Response(); $em = $this->getDoctrine()->getManager(); $page_repository = $em->getRepository('NovuscomCMFBundle:Page'); $host = $request->headers->get('host'); $cacheId = json_encode($params); $section_id = null; if (array_key_exists('section_id', $params)) { $section_id = $params['section_id']; } $template_code = 'default'; //$this->msg($params); if (array_key_exists('template_code', $params)) { $template_code = $params['template_code']; /*if (array_key_exists('params', $params) && array_key_exists('template_code', $params['params'])) $template_code = $params['params']['template_code'];*/ } $env = $this->get('kernel')->getEnvironment(); $exist_page_id = array_key_exists('page_id', $params); if (!$exist_page_id) { $params['page_id'] = false; } if (!array_key_exists('LIMIT', $params)) { $params['LIMIT'] = null; } if (!array_key_exists('OPTIONS', $params)) { $params['OPTIONS'] = null; } $Site = $this->get('Site'); $site = $Site->getCurrent(); /** * Кэш */ //$cacheDriver = new \Doctrine\Common\Cache\FilesystemCache($_SERVER['DOCUMENT_ROOT'] . '/../app/cache/' . $env . '/sys/' . $host . '/components/ElementsList/'); $cacheDriver = new \Doctrine\Common\Cache\ApcuCache(); $cacheDriver->setNamespace('ElementsListAction_' . $env . '_' . $params['BLOCK_ID']); if (false) { //if ($fooString = $cacheDriver->fetch($cacheId)) { //echo '<pre>' . print_r('есть такое в кеше', true) . '</pre>'; $render = unserialize($fooString); } else { $response_data = array(); $logger->info('Выбор списка элементов из инфоблока ' . $params['BLOCK_ID']); /** * Элементы */ $elements = $this->getElementsList($params['BLOCK_ID'], false, $params); $response_data['title'] = ''; $pageEntity = $page_repository->find($params['page_id']); if ($pageEntity) { $pagination = $this->getPagination($elements, $PAGE, $params, $site); if ($this->paginationRedirect !== false) { return new RedirectResponse($this->paginationRedirect); } $response_data['pagination'] = $pagination; $response_data['title'] = $pageEntity->getTitle(); $response_data['header'] = $pageEntity->getHeader(); $response_data['description'] = $pageEntity->getDescription(); $response_data['page'] = $pageEntity; } /** * Данные попадающие в шаблон */ $response_data['elements'] = $elements; $response_data['options'] = $params['OPTIONS']; $response_data['params'] = $params; $template = '@templates/' . $site['code'] . '/ElementsList/' . $template_code . '.html.twig'; if ($this->get('templating')->exists($template) === false) { $template = 'NovuscomCMFBundle:DefaultTemplate/ElementsList:default.html.twig'; } $render = $this->render($template, $response_data, $response); } return $render; }
public function sections_listAction($block_id = false, $section_id = null, $template_code = "default", $get_elements = null, $params) { //$cache = new \Doctrine\Common\Cache\FilesystemCache($_SERVER['DOCUMENT_ROOT'] . '/../app/cache/sys/components/sections_list/'); $cache = new \Doctrine\Common\Cache\ApcuCache(); $cacheId = md5(json_encode(array('block_id' => $block_id, 'section_id' => $section_id, 'template_code' => $template_code, 'get_elements' => $get_elements))); //echo '<pre>' . print_r($cache->fetch($cacheId), true) . '</pre>'; if ($fooString = $cache->fetch($cacheId)) { //echo '<pre>' . print_r('возвращаем закешированные данные', true) . '</pre>'; $render = unserialize($fooString); } else { //echo '<pre>' . print_r('возвращаем не закешированные данные', true) . '</pre>'; $em = $this->getDoctrine()->getManager(); //echo '<pre>' . print_r($block_id, true) . '</pre>'; if (is_numeric($block_id)) { //$sections = $em->getRepository('NovuscomCMFBundle:Section')->findBy(array('block' => $block_id, 'lvl' => 0)); //echo '<pre>' . print_r($block_id, true) . '</pre>'; $repository = $em->getRepository('NovuscomCMFBundle:Section'); $query = $repository->createQueryBuilder('p')->where('p.block = :block_id')->setParameters(array('block_id' => $block_id))->orderBy('p.sort', 'ASC')->getQuery(); $sections = $query->getResult(); /*foreach($sections as $s) { echo '<pre>' . print_r($s->getName(), true) . '</pre>'; }*/ } else { //echo '<pre>' . print_r('notfound', true) . '</pre>'; throw $this->createNotFoundException(''); } if (is_int($section_id)) { $repository = $em->getRepository('NovuscomCMFBundle:Section'); $query = $repository->createQueryBuilder('p')->where('p.id = :section_id')->setParameter('section_id', $section_id)->orderBy('p.sort', 'ASC')->getQuery(); $sections = $query->getResult(); } $this->setSectionsElements($sections); $response = new Response(); $data = array(); $data['sections'] = $sections; //echo '<pre>' . print_r($template_code, true) . '</pre>'; $render = $this->render('@templates/' . $params['params']['template_directory'] . '/SectionsList/' . $template_code . '.html.twig', $data, $response); } return $render; }
private function getCacheDriver() { //$redis = new Redis(); //$redis->connect('127.0.0.1', 6379); $site = $this->getSite(); $env = $this->get('kernel')->getEnvironment(); //$cacheDriver = new \Doctrine\Common\Cache\FilesystemCache($_SERVER['DOCUMENT_ROOT'] . '/../app/cache/' . $env . '/sys/' . $site['id'] . '/pages/'); $cacheDriver = new \Doctrine\Common\Cache\ApcuCache(); //$cacheDriver = new \Doctrine\Common\Cache\RedisCache(); $cacheDriver->setNamespace('Pages_' . $env); return $cacheDriver; }
private function clearCache($page_id) { $cacheDriver = new \Doctrine\Common\Cache\ApcuCache(); $cacheDriver->delete('page_' . $page_id); }
private function clearMenuCache($menu_id) { //$env = $this->container->getParameter("kernel.environment"); //echo '<pre>' . print_r('Удаление кеша '.$menu_id, true) . '</pre>'; exit; $cacheDriver = new \Doctrine\Common\Cache\ApcuCache(); $cacheDriver->setNamespace('menu_prod_' . $menu_id); $cacheDriver->deleteAll(); $cacheDriver->setNamespace('menu_dev_' . $menu_id); $cacheDriver->deleteAll(); }
private function clearElementsListCache($request, $block_id) { $env = $this->get('kernel')->getEnvironment(); $cacheDriver = new \Doctrine\Common\Cache\ApcuCache(); $cacheDriver->setNamespace('ElementsListAction_' . $env . '_' . $block_id); $cacheDriver->deleteAll(); }