Re: [APC-DEV] Caching file_get_contents output inside APC (Performance improvement).

From: Date: Tue, 27 Oct 2009 01:11:27 +0000
Subject: Re: [APC-DEV] Caching file_get_contents output inside APC (Performance improvement).
References: 1 2  Groups: php.pecl.dev php.apc.dev 
Request: Send a blank email to pecl-dev+get-6732@lists.php.net to get a copy of this message
Hi, Probably it will perform close to the version I attached but my point is that application doesn't need to be modified and can use this feature by modifying configuration. More options which I think of which can be used to extend the caching feature : apc.cache_max_file_size # Maximum amount of files to be cached apc.max_cache_use_bytes # Maximum amount of space to be occupied in cache. Regards, Basant. On Mon, Oct 26, 2009 at 2:14 PM, Pierre Joye <pierre.php@gmail.com> wrote: > hi, > > As caching everything obviously helps, I wonder if it makes sense to > do it inside an opcode cache. What performence improvement does it > bring vs: > > (pseudo code where my_cache* could be either APC user cache, memcached > or other caching lib like Cache_Lite) > if (!($cached = my_cache_get($key))) { >  $data = file_get_contents($path); >  my_cache_add($data, $ttl); > } > > Cheers, > -- > Pierre > On Mon, Oct 26, 2009 at 9:36 PM, Basant Kukreja > <basant.kukreja@gmail.com> wrote: >> Hi, >>   APC creates a mmap which is used for caching compiled php response. Besides >> this APC provides API to cache user data into this mmap. There are many php >> apps which uses file_get_contents to read the static files. If APC can cache >> these files in it's mmap, it will improve file_get_contents performance. >> >> Based on the above idea, I developed a patch which stores the file_get_contents >> output in APC's cache. In this patch, APC intercepts the calls of >> file_get_contents and replaces it with apc_file_get_contents function. If file >> is a full path and entire file is requested then APC caches the content. >> >> To enable the caching use the following in php.ini : >> apc.cache_static_contents=1 >> apc.user_ttl = 30 >> >> apc.user_ttl will decide how long the entry will remain inside the cache..  If >> apc.user_ttl is set to 0 then the entry will never be removed from cache.. >> >> Here is the performance data collected using Studio 12 on Solaris sparc for >> ecommerce php benchmark. (3500 simultaneous users) >> >> Excl.     Incl.     Excl.       Incl.       Excl.     Incl.      Name >> User CPU  User CPU  Total LWP   Total LWP   Sys. CPU  Sys. CPU >>    sec.      sec.        sec.        sec.      sec.      sec. >> No Cache : >>  0.831    28.660       1.141     540.018     0.030   344.311 >> zif_file_get_contents >> With Cache : >>  1.481   181.537       1.821     282.758     0.140    12.449 >> zif_apc_file_get_contents >> >> >> User + System time before Caching = 372 seconds >> User + System time after Caching = 193 seconds >> Total time reduction in file_cache_contents = 48% >> >> Here is my blog : >> >> http://blogs.sun.com/basant/entry/caching_file_get_contents_output >> Here is the link to the patch : >> >> http://blogs.sun.com/basant/resource/apc_file_cache_trunk_patch.txt >> >> There are many other enhancements possible in this patch. I would appreciate >> any comments. >> >> Regards, >> Basant. >> >> -- >> APC Development Mailing List (http://pecl.php.net/APC) >> To unsubscribe, visit: http://www.php.net/unsub.php >> >> > > > > -- > Pierre > > http://blog.thepimp.net | > http://www.libgd.org >

« previous php.pecl.dev (#6732) next »