[prev in list] [next in list] [prev in thread] [next in thread] 

List:       smarty-dev
Subject:    Re: [SMARTY-DEV] More accurate compiled file names
From:       messju mohr <messju () lammfellpuschen ! de>
Date:       2004-05-31 6:17:12
Message-ID: 20040531061711.GA20209 () pharao ! serveftp ! org
[Download RAW message or body]

On Mon, May 31, 2004 at 12:28:31AM +0400, Dmitry Koteroff wrote:
> I know about crc32(). Let's see code:
> 
> -            // make source name safe for filename
> -            $_filename = urlencode(basename($auto_source));
> -            $_crc32 = crc32($auto_source) . $_compile_dir_sep;
> -            // prepend %% to avoid name conflicts with
> -            // with $params['auto_id'] names
> -            $_crc32 = '%%' . substr($_crc32,0,3) . $_compile_dir_sep . '%%' . $_crc32;
> -            $_return .= $_crc32 . $_filename;
> 
> Please  consider  using  of  basename() function! Pathname is NOT
> included  in  the  cache  filename.  I am talking about that, ant
> attached  patch  solves  this - uses full path instead of crc32()
> (or in addition to it).
> 
> Use_sub_dirs does not makes Smarty to consider full path. It does
> other thing - it improves (theoretically) performance.

yes. FWIW: Smarty-2.5.0 behaves differently than 2.6.2 does: with
use_sub_dirs=true it behaves like 2.6.2, but with use_sub_dirs=false
it behaves as you propose: no crc32-numbers in the
compiled-template-name, but something like ^full^path^to^template.tpl .

I like the behaviour of 2.5.0 more than it is now and would like to
see it reverted.


> -- 
> Best regards,
>   Dmitry Koteroff.
> 
> RA> Hi,
> 
> RA> The compiled templates are saved in filenames that reflect their filename
> RA> and content.
> 
> RA> The numbers you see there are the result of a crc32() on the contents of
> RA> the file (see http://www.php.net/crc32). This is taken to ensure that each
> RA> filename is unique, so that two templates called "header.tpl" in different
> RA> locations do not overwrite each others compiled template file.
> 
> RA> so a file like %%-13/%%-135052920/header.tpl.php should be perfectly
> RA> understandable as the compiled template for "header.tpl"
> 
> RA> The filenames are split into directories so that on larger smarty
> RA> installations, there is no filesystem delay trying to access the files. If
> RA> you do not wish to use directories, simply ensure that 
> RA> $smarty->use_sub_dirs = false and Smarty will automatically substitute /
> RA> for ^ in your compiled template files.
> 
> RA> Hope this helps.
> 
> RA> Regards,
> RA> -bok
> 
> RA> At 08:31 AM 30/05/2004, you wrote:
> >>Hello.
> >>
> >>Smarty  saves  its  compiled  code to files with unreadable names
> >>(like  %%23t2763%%sjhdjsdhjshgd.php).  It  makes too difficult to
> >>find  fatal  error in the template (for example, {$obj->spoon()},
> >>where spoon is non-existent method).
> >>
> >>Attached patch corrects this problem - it replaces "/" by "^" and
> >>saves the file to temporary location.
> >>
> >>Replacement code:
> >>
> >>$_filename = preg_replace("{[/\\\\]}s", "^", $_filename);
> >>$_filename = preg_replace("{[^a-z0-9~!_=.^-]}si", "_", $_filename);
> >>
> >>Don't you plan to insert this patch to production version?
> >>
> >>--
> >>Best regards,
> >>   Dmitry Koteroff.
> >>--
> >>Smarty Development Mailing List (http://smarty.php.net/)
> >>To unsubscribe, visit: http://www.php.net/unsub.php
> 
> -- 
> Smarty Development Mailing List (http://smarty.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php

-- 
Smarty Development Mailing List (http://smarty.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic