XCache: Ticket Queryhttp://xcache.lighttpd.net/query?status=!closed&version=&order=id
XCache is an opcode cacher for php, with some opcode utilities.en-USXCache/chrome/site/xcache.pnghttp://xcache.lighttpd.net/query?status=!closed&version=&order=id
Trac 1.0.6.post2http://xcache.lighttpd.net/ticket/58
http://xcache.lighttpd.net/ticket/58#58: integrate run-xcachetest with phpbenchMon, 18 Dec 2006 04:47:11 GMTjudas_iscariote<p>
Will be nice if we can integrate run-xcachetest with <a class="ext-link" href="http://www.pureftpd.org/project/phpbench" rel="nofollow"><span class="icon">​</span>phpbench</a> so, additionally or checking for functional regressions, we can perform some kind of performance test.
</p>
Resultshttp://xcache.lighttpd.net/ticket/58#changeloghttp://xcache.lighttpd.net/ticket/176
http://xcache.lighttpd.net/ticket/176#176: xcache_isset support XC_TYPE_PHPSat, 10 May 2008 19:57:49 GMTanonymous<p>
Why xcache_isset do not support check, if a specific php file is cached or not?
Can be secure and more faster than file_exists before includes.
</p>
Resultshttp://xcache.lighttpd.net/ticket/176#changeloghttp://xcache.lighttpd.net/ticket/179
http://xcache.lighttpd.net/ticket/179#179: xcache_set/get Multiple KeysSat, 31 May 2008 15:17:18 GMTpaulgao@…<p>
一般情况下，在执行的 PHP 脚本中，很少会只用一次两次的 var cache。
</p>
<p>
都会这么写：
foreach ($data AS $key =&gt; $value)
{
</p>
<blockquote>
<p>
xcache_set($key, $value, $ttl);
</p>
</blockquote>
<p>
}
</p>
<p>
xcache_get 也基本上差不多，尤其在把数据库的记录当作一个 key -&gt; value 对存在的时候，往往做一个列表页的情况下，会进行很大批量的 get 和 set 操作。从性能开销的考虑来看，由 xcache 支持批量操作，速度会提升 5-10 倍。目前 APC 和 MEMCACHE 的 get 操作都支持批量 key 的存取。我想除了方便的角度，也有性能提升的考虑吧。
</p>
<p>
我设想增加 xcache_gets API，原型为：
</p>
<p>
array xcache_gets(array $keys, [array &amp;$unget_keys])
</p>
<p>
变量 keys 为一批 key，变量 unget_keys 为在缓存中未获得到的 key 的数组。方便后期代码中进行数据的获取，而不需要再进行循环操作。
</p>
<p>
如果可以的话，也可以增加 xcache_sets 函数，原型为：
</p>
<p>
bool xcache_sets(array $data, $ttl)
</p>
<p>
变量 $data 为 key -&gt; $value 对。
</p>
<p>
以上建议请希望开发者慎重考虑～
</p>
Resultshttp://xcache.lighttpd.net/ticket/179#changeloghttp://xcache.lighttpd.net/ticket/206
http://xcache.lighttpd.net/ticket/206#206: Shared Cache (? Daemon ?)Thu, 20 Nov 2008 09:52:23 GMTa.rieser@…<p>
I don't know how hard it is to implement the feature I'm going to describe now. Maybe I can help out with some work. I am basically expecting a discussion, as this seems to be a really innovative and good idea:
</p>
<p>
As we have joining forces everywhere around open source software projects, there are a lot of great frameworks being created. Some of them offer the possibility to have a kind of core, that can be shared between different applications/installations. Im a [http:/typo3.org/ TYPO3] guy, so imagine something like one core and many dummy packages (= installations, that are attached via symlinks). I think this or something similar can be found in several other projects. The point is: This is great with an opcode cacher if you use it with mod_php or in an one process fastcgi environment, because of the central cache even low traffic installations can benefit from the cached core files.
</p>
<p>
When it comes to shared hosting you probably want to have some more security and consider using methods like suexec or simply <a class="ext-link" href="http://redmine.lighttpd.net/wiki/lighttpd/HowToSetupFastCgiIndividualPermissions" rel="nofollow"><span class="icon">​</span>individual user permissions</a> for your fastcgi environment. So the core files are readonly and shared, every vhost owns an installation which it can't escape. But we have to build redundant caches for each vhost, which makes it impossible to do efficient caching as you may have to limit the cache sizes etc.
</p>
<p>
And then we have this great xcache feature called "Readonly Cacher Protection", so that the cache can't be touched by anyone else but xcache.
</p>
<p>
So maybe it would make sense to have something additional to those redundant caches that delivers a "shared cache". In this Case this cache would hold the cached core files.
</p>
<p>
Im talking about a concept with two caches in xcache, a private one and a shared. In an configuration directive we could define special directories which will not go to the private cache, but instead being written to the shared. In case of searching the cache both caches have to be considered.
</p>
<p>
Reading might not be the problem (but world-readable is a bad thing), but the different permissions will be tricky at least in case of clearing the cache. So maybe to solve this, there has to be a daemon around that
</p>
<ul><li>owns the shared cache
</li><li>knows which directories should be cached there
</li><li>is searchable from the different fastcgi driven xcaches
</li><li>delivers shared cache content and in case of a miss for a file that has to stay in his hands:
</li><li>tells his fastcgi driven friends to store this miss at his place
</li><li>accepts new content and saves it
</li><li>will invalidate it when needed
</li></ul><p>
So what do you think about that concept?
</p>
Resultshttp://xcache.lighttpd.net/ticket/206#changeloghttp://xcache.lighttpd.net/ticket/268
http://xcache.lighttpd.net/ticket/268#268: choosing specified cache slot for xcache_setThu, 08 Dec 2011 16:52:52 GMTdigi1<p>
I would like to suggest an optional paramter for xcache_set to specify a certain variable cache (var<a class="missing ticket">#0</a>, var<a class="new ticket" href="http://xcache.lighttpd.net/ticket/1" title="enhancement: [TODO] A Uptime statistics collector (new)">#1</a> etc).
</p>
<p>
For me and maybe others it would be very useful, because I am caching one information object that is very large and many small ones. If I were able to specify the variable cache, I could ensure that the
large object and the small objects stay in different caches. Otherwise the small objects may end up in positions, so that there is not enough continuous room left for the large object.
</p>
Resultshttp://xcache.lighttpd.net/ticket/268#changelog