Пример #1
0
 public function __call($method, $args)
 {
     $driver = null;
     switch (config()->cache_driver()) {
         case 'memcached':
             $memcached = new \Memcached();
             $memcached->addServer(config()->cache_host(), 11211);
             $driver = new \Doctrine\Common\Cache\MemcachedCache();
             $driver->setMemcached($memcached);
             break;
         case 'apc':
             $driver = new \Doctrine\Common\Cache\ApcCache();
             break;
     }
     switch ($method) {
         case 'set':
             // $driver->delete($args[0]);
             $driver->save($args[0], json_encode($args[1]));
             break;
         case 'get':
             return json_decode($driver->fetch($args[0]));
             break;
     }
 }
Пример #2
0
 public function render($options)
 {
     $time_start = microtime(1);
     $request = $this->container->get('request');
     $env = $this->container->getParameter("kernel.environment");
     $routeParams = $request->get('_route_params');
     $options['@request_uri'] = $_SERVER['REQUEST_URI'];
     $cacheId = json_encode($options);
     //$cacheDriver = new \Doctrine\Common\Cache\FilesystemCache($_SERVER['DOCUMENT_ROOT'] . '/../app/cache/' . $env . '/sys/menu/');
     $cacheDriver = new \Doctrine\Common\Cache\ApcCache();
     $namespace = 'menu_' . $env . '_' . $options['id'];
     $this->logger->info('Menu ' . $options['id'] . ' NameSpace: ' . $namespace);
     $cacheDriver->setNamespace($namespace);
     if ($fooString = $cacheDriver->fetch($cacheId)) {
         $result = unserialize($fooString);
     } else {
         $array = $this->getArray($options['id']);
         $result = $this->getMenu($options, $array);
         $cacheDriver->save($cacheId, serialize($result));
     }
     echo $result;
     $time_end = microtime(1);
     $time = number_format(($time_end - $time_start) * 1000, 2);
     //echo $time.' мс';
 }
Пример #3
0
 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\ApcCache();
     $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;
 }
Пример #4
0
 public function elementAction($id, Request $request, $template_code = 'default')
 {
     $host = $request->headers->get('host');
     $cacheId = 'id=[' . $id . ']';
     $env = $this->get('kernel')->getEnvironment();
     //$cache = new \Doctrine\Common\Cache\FilesystemCache($_SERVER['DOCUMENT_ROOT'] . '/../app/cache/'.$env.'/sys/'.$host.'/element/');
     $cache = new \Doctrine\Common\Cache\ApcCache();
     if ($fooString = $cache->fetch($cacheId)) {
         //echo '<pre>' . print_r('есть кэш '.$cacheId, true) . '</pre>';
         $response = unserialize($fooString);
     } else {
         $element = new FrontElement();
         $em = $this->getDoctrine()->getManager();
         $entity = $em->getRepository('NovuscomCMFBundle:Element')->find($id);
         $element->setInfo($entity);
         $propertyFiles = $em->getRepository('NovuscomCMFBundle:ElementPropertyF')->findBy(array('element' => $entity, 'property_id' => 26));
         foreach ($propertyFiles as $pf) {
             //echo '<pre>' . print_r($pf->getFile(), true) . '</pre>';
             $element->addPropertyFile($pf->getFile());
         }
         //echo '<pre>' . print_r($entity->getName(), true) . '</pre>';
         if ($entity) {
             $templatePath = 'CMFTemplateBundle:Element:' . $template_code . '.html.twig';
             $response = $this->render($templatePath, array('element' => $element));
         } else {
             $response = new Response('<div>Элемент не найден</div>');
         }
         $cache->save($cacheId, serialize($response));
     }
     return $response;
 }
Пример #5
0
 public function ElementsListAction($params, Request $request)
 {
     if ($this->checkConstruction()) {
         return $this->constructionResponse();
     }
     /**
      * Переменные
      */
     $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';
     if (array_key_exists('template_code', $params)) {
         $template_code = $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;
     }
     /**
      * Кэш
      */
     //$cacheDriver = new \Doctrine\Common\Cache\FilesystemCache($_SERVER['DOCUMENT_ROOT'] . '/../app/cache/' . $env . '/sys/' . $host . '/components/ElementsList/');
     $cacheDriver = new \Doctrine\Common\Cache\ApcCache();
     $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();
         //echo '<pre>' . print_r($params, true) . '</pre>';
         /**
          * Элементы
          */
         $ElementsList = $this->get('ElementsList');
         $ElementsList->setBlockId($params['BLOCK_ID']);
         $ElementsList->setSelect(array('code', 'last_modified', 'preview_picture', 'preview_text'));
         // TODO Здесь в сервисе ElementList - выбирать все свойства
         $ElementsList->selectProperties(array('address', 'shirota', 'anounce', 'long_name', 'date'));
         $ElementsList->setFilter(array('active' => true));
         $ElementsList->setLimit($params['LIMIT']);
         $ElementsList->setOrder(array('name', 'asc'));
         $elements = $ElementsList->getResult();
         /**
          * Данные попадающие в шаблон
          */
         $response_data['elements'] = $elements;
         $response_data['options'] = $params['OPTIONS'];
         $response_data['page'] = $page_repository->find($params['page_id']);
         $render = $this->render('@templates/' . $params['params']['template_directory'] . '/ElementsList/' . $template_code . '.html.twig', $response_data, $response);
         $cacheDriver->save($cacheId, serialize($render));
     }
     return $render;
 }