Foros del Web » Creando para Internet » Sistemas de gestión de contenidos »

Porque alguna APPs guardan los templates en SQL

Estas en el tema de Porque alguna APPs guardan los templates en SQL en el foro de Sistemas de gestión de contenidos en Foros del Web. Hola Algunas aplicaciones prefabricadas como vBulletin guardan sus templates en mysql, yo tenia entendido que era mas rapido el sistema de archivos que la base ...
  #1 (permalink)  
Antiguo 13/01/2011, 18:14
 
Fecha de Ingreso: febrero-2005
Mensajes: 625
Antigüedad: 14 años, 7 meses
Puntos: 10
Porque alguna APPs guardan los templates en SQL

Hola

Algunas aplicaciones prefabricadas como vBulletin guardan sus templates en mysql, yo tenia entendido que era mas rapido el sistema de archivos que la base de datos, entonces porque estas aplicaciones lo hacen en mysql, cual es su razon?

Saludos y gracias de antemano
  #2 (permalink)  
Antiguo 13/01/2011, 20:03
Avatar de mandrake88  
Fecha de Ingreso: septiembre-2009
Ubicación: Argentina
Mensajes: 328
Antigüedad: 10 años
Puntos: 13
Respuesta: Porque alguna APPs guardan los templates en SQL

Generalmente se guarda en la base de datos, pero se genera un achivo de cache con el codigo procesado (generalmente de extension .tpl o .html). No es obtenido directamente de la base de datos cada vez q la pagina es visualizada.

El por que del uso de la base de datos, no lo se, supongo que para facilitar la edicion de las plantillas via panel de admin, es mas facil modificar el contenido de tabla, que abrir un archivo para editarlo.
  #3 (permalink)  
Antiguo 13/01/2011, 21:24
 
Fecha de Ingreso: febrero-2005
Mensajes: 625
Antigüedad: 14 años, 7 meses
Puntos: 10
Respuesta: Porque alguna APPs guardan los templates en SQL

Estuve viendo en vBulletin 3.6 de la cual tengo licencia

Código PHP:
Ver original
  1. function cache_templates($templates, $templateidlist)
  2. {
  3.     global $vbulletin, $templateassoc;
  4.  
  5.     if (empty($templateassoc))
  6.     {
  7.         $templateassoc = unserialize($templateidlist);
  8.     }
  9.  
  10.     if ($vbulletin->options['legacypostbit'] AND in_array('postbit', $templates))
  11.     {
  12.         $templateassoc['postbit'] = $templateassoc['postbit_legacy'];
  13.     }
  14.  
  15.     foreach ($templates AS $template)
  16.     {
  17.         $templateids[] = intval($templateassoc["$template"]);
  18.     }
  19.  
  20.     if (!empty($templateids))
  21.     {
  22.         // run query
  23.         $temps = $vbulletin->db->query_read_slave("
  24.             SELECT title, template
  25.             FROM " . TABLE_PREFIX . "template
  26.             WHERE templateid IN (" . implode(',', $templateids) . ")
  27.         ");
  28.  
  29.         // cache templates
  30.         while ($temp = $vbulletin->db->fetch_array($temps))
  31.         {
  32.             if (empty($vbulletin->templatecache["$temp[title]"]))
  33.             {
  34.                 $vbulletin->templatecache["$temp[title]"] = $temp['template'];
  35.             }
  36.         }
  37.         $vbulletin->db->free_result($temps);
  38.     }
  39.  
  40.     $vbulletin->bbcode_style = array(
  41.         'code'  => &$templateassoc['bbcode_code_styleid'],
  42.         'html'  => &$templateassoc['bbcode_html_styleid'],
  43.         'php'   => &$templateassoc['bbcode_php_styleid'],
  44.         'quote' => &$templateassoc['bbcode_quote_styleid']
  45.     );
  46.  
  47. }
  48.  
  49. // #############################################################################
  50. /**
  51. * Returns a single template from the templatecache or the database
  52. *
  53. * @param    string  Name of template to be fetched
  54. * @param    integer Escape quotes in template? 1: escape template; -1: unescape template; 0: do nothing
  55. * @param    boolean Wrap template in HTML comments showing the template name?
  56. *
  57. * @return   string
  58. */
  59. function fetch_template($templatename, $escape = 0, $gethtmlcomments = true)
  60. {
  61.     // gets a template from the db or from the local cache
  62.     global $style, $vbulletin, $tempusagecache, $templateassoc;
  63.  
  64.     // use legacy postbit if necessary
  65.     if ($vbulletin->options['legacypostbit'] AND $templatename == 'postbit')
  66.     {
  67.         $templatename = 'postbit_legacy';
  68.     }
  69.  
  70.     if (isset($vbulletin->templatecache["$templatename"]))
  71.     {
  72.         $template = $vbulletin->templatecache["$templatename"];
  73.     }
  74.     else
  75.     {
  76.         DEVDEBUG("Uncached template: $templatename");
  77.         $GLOBALS['_TEMPLATEQUERIES']["$templatename"] = true;
  78.  
  79.         $fetch_tid = intval($templateassoc["$templatename"]);
  80.         if (!$fetch_tid)
  81.         {
  82.             $gettemp = array('template' => '');
  83.         }
  84.         else
  85.         {
  86.             $gettemp = $vbulletin->db->query_first_slave("
  87.                 SELECT template
  88.                 FROM " . TABLE_PREFIX . "template
  89.                 WHERE templateid = $fetch_tid
  90.             ");
  91.         }
  92.         $template = $gettemp['template'];
  93.         $vbulletin->templatecache["$templatename"] = $template;
  94.     }
  95.  
  96.     // **************************
  97.     /*
  98.     if ($template == '<<< FILE >>>')
  99.     {
  100.         $template = addslashes(implode('', file("./templates/$templatename.html")));
  101.         $vbulletin->templatecache["$templatename"] = $template;
  102.     }
  103.     */
  104.     // **************************
  105.  
  106.     switch($escape)
  107.     {
  108.         case 1:
  109.             // escape template
  110.             $template = addslashes($template);
  111.             $template = str_replace("\\'", "'", $template);
  112.             break;
  113.  
  114.         case -1:
  115.             // unescape template
  116.             $template = stripslashes($template);
  117.             break;
  118.     }
  119.  
  120.     if (isset($tempusagecache["$templatename"]))
  121.     {
  122.         ++$tempusagecache["$templatename"];
  123.     }
  124.     else
  125.     {
  126.         $tempusagecache["$templatename"] = 1;
  127.     }
  128.  
  129.     if ($vbulletin->options['addtemplatename'] AND $gethtmlcomments)
  130.     {
  131.         $templatename = preg_replace('#[^a-z0-9_]#i', '', $templatename);
  132.         return "<!-- BEGIN TEMPLATE: $templatename -->\n$template\n<!-- END TEMPLATE: $templatename -->";
  133.     }
  134.  
  135.     return $template;
  136. }

Si te fijas el "cacheo" lo hace al obtener de la base de datos los templates y guardarlos en un array, tu crees que con guardarlo en un array, sea suficiente para decir que esta guardado en cache ? Tomando parte del codigo anterior, o hay alguna otra cosa que hace para guardar en cache?

Código PHP:
Ver original
  1. // cache templates
  2.         while ($temp = $vbulletin->db->fetch_array($temps))
  3.         {
  4.             if (empty($vbulletin->templatecache["$temp[title]"]))
  5.             {
  6.                 $vbulletin->templatecache["$temp[title]"] = $temp['template'];
  7.             }
  8.         }

Etiquetas: apps, sql, template
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:50.