{5} Assigned, Active Tickets by Owner (Full Description) (8 matches)

List tickets assigned, group by ticket owner. This report demonstrates the use of full-row display.

moo (8 matches)

Ticket Summary Component Milestone Type Created
#179 xcache_set/get Multiple Keys cacher 3.2.0 enhancement 2008-05-31

一般情况下,在执行的 PHP 脚本中,很少会只用一次两次的 var cache。

都会这么写: foreach ($data AS $key => $value) {

xcache_set($key, $value, $ttl);


xcache_get 也基本上差不多,尤其在把数据库的记录当作一个 key -> value 对存在的时候,往往做一个列表页的情况下,会进行很大批量的 get 和 set 操作。从性能开销的考虑来看,由 xcache 支持批量操作,速度会提升 5-10 倍。目前 APC 和 MEMCACHE 的 get 操作都支持批量 key 的存取。我想除了方便的角度,也有性能提升的考虑吧。

我设想增加 xcache_gets API,原型为:

array xcache_gets(array $keys, [array &$unget_keys])

变量 keys 为一批 key,变量 unget_keys 为在缓存中未获得到的 key 的数组。方便后期代码中进行数据的获取,而不需要再进行循环操作。

如果可以的话,也可以增加 xcache_sets 函数,原型为:

bool xcache_sets(array $data, $ttl)

变量 $data 为 key -> $value 对。


#176 xcache_isset support XC_TYPE_PHP cacher 5.0.0 defect 2008-05-10

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.

#241 Compiled Code For eval() cacher 5.0.0 enhancement 2010-04-26

The biggest performance issue we see these days is there is no good way to eval compiled code.

It would be *really* nice if XCache could intercept eval() calls, generate a md5 hash based on the code to be run, compile that code with the md5 as the internal key if the key isn't already compiled/stored in memory. Then execute the compiled version of the code.

#242 xcache_get() For Multiple Keys cacher 5.0.0 enhancement 2010-04-28

It would be really nice if xcache_get() worked in a similar fashion to how Memcache:get() works...


If you pass it a string, it returns the key requested (just like xcache_get() currently works), but if you pass it an array, it will return an array of those keys. So you are able to optionally get a bunch of keys in one pass. Changing how it works if you passed an array to it should be backwardly compatible since it would still work the same if you pass a string to it.

#95 Memory is not free()'d after xcache_get() data is unset cacher 3.2.0 defect 2007-05-15

I've tested EA vs XCache performance on cache reads and got the following problem:


    function ea_read ($max) # void
        global $DATA;

        for($i = 0;$i<10;$i++)
            $key[$i] = 'some_key_'.$i;
            eaccelerator_put($key[$i], $DATA);

        for($i = 0;$i<$max;$i++)
            $val = eaccelerator_get($key[$i%10]);

    function xcache_read ($max) # void
        global $DATA;

        for($i = 0;$i<10;$i++)
            $key[$i] = 'some_key_'.$i;
            xcache_set($key[$i], $DATA);

        for($i = 0;$i<$max;$i++)
            $val = xcache_get($key[$i%10]);

Result ($max = 10000):

    $DATA = str_repat('x',10000); 

Everything is ok.

    $DATA = array_map('uniqid', range(1,10));

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 15 bytes).

It seems that XCache somehow marks array items that they aren't released (may be it increases ref_count?). I tried to add "unset($val);" after "$val = xcache_get();" but it didn't help.

The only solution I've found is:

   $val = unserialize(xcache_get($key));

but it looks weird (and slows down xcache calls) ...

#268 choosing specified cache slot for xcache_set cacher 3.2.0 enhancement 2011-12-08

I would like to suggest an optional paramter for xcache_set to specify a certain variable cache (var#0, var#1 etc).

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.

#289 class loading fails using stream_wrapper_register for the file:// protocol with xcache enabled cacher undecided defect 2012-09-25

I am using a proxy filestream wrapper which takes notes of modifying file operations. For each operation it unregisters it self and executes the operation using the respective php function, and than registers it self again as the wrapper for the file:// protocol.

As soon as xcache is enabled, and the proxy wrapper is used, php fails to load the file wrapper class in stream_wrapper_register('file', CLASS)

I concluded that xcache should use the &php_plain_files_wrapper and not a class which can't get loaded because the stream wrapper is unregistered just before that.

I wrote a small patch for the 2.0.1 version which enables the &php_plain_files_wrapper for xcache and restores the original as soon as xcache is done compiling of the php code

gcc version: gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3 php version: PHP 5.3.5-0.dotdeb.1 with Suhosin-Patch (built: Jan 18 2011 13:18:29)

#253 lazy stat (was: reduce the number of fstat call to help server on SAN and network file servers) cacher 3.2.0 enhancement 2010-10-19

Adding a parameter to indicate a modification time check delay for php opcode cache can help reduce the load for php server with root directory on a SAN or any network file system. The fstat cost with such setup is much higher than on local filesystem.

This can be implemented this way:

Adding a struct member with the last m_time check in the cache entry. Check this entry and compare it with the request time, if the last check is within the specified delay (10 seconds for example), use the cache entry as is. If the last check time is older, read the m_time, update the last check time and do the timestamp compare as now.

Note: See TracReports for help on using and creating reports.