This is my thoughts on this.... I'd appreciate any comments. I think I could get it done in a few (2-3) weeks. Although I'm a little unsure of the thread safety issues.
Medvitz Yasuo Ohgaki wrote: > Thanks for all who gave me feedback. > This is summary. If you have comment, I appreciate it. > > -----------rfc---------- > Module name: psv (Persistent Server Variable) > > Back Ground: > Session servers can be used to share data. Shared memory module > can store persisent data. However, both of them are not suitable > for large static application configuration. > For example, Celeron 466/linux needs 0.4-0.5 sec to unserialize > 1MB serialized data. (It not so large, it's only 2000 elements > in my case) > 0.4-0.5 sec. for each request only for unserialising data is not > unacceptable for most web applications. > > Feature: > Maintain persisent variable for a server that does not require > unserialize. > > Function: > bool psv_register(string var_name, string access_key, array values); > where var_name is variable name, values are array to regieter, > key is access key for the variable. > > bool psv_is_registered(string var_name, string access_key); > Return TRUE is var_name is registered with the access_key. > > bool psv_unregister(string var_name, string access_key); > Unregister persistent variable. > > bool psv_get(string var_name, string access_key, [bool copy]); > Get a persistent variable into global scope. If copy is TRUE, > set copy of persistent variable so that users can modify as > they want. > (I'll make array read only if it's possible) > > Implementtion: > Shared memory (libmm) for multi-process server. > Multi-thread server uses global with lock/unlock. > > Usage: > <?php > > if (!psv_is_registerd('MY_LOOKUP_TABLE','access_key_here')) { > // array definition should be in separate file to avoid > // parsing for real usage. > $lookup_table = array (... very large array definition .... ); > psv_register('MY_LOOKUP_TABLE', 'access_key_here', $lookup_table); > } > else { > psv_get('MY_LOOKUP_TABLE', 'access_key_here', $lookup_table); > } > > echo $MY_LOOKUP_TABLE['var']; > // Should I make $MY_LOOKUP_TABLE auto global? > // Or I shouldn't > > ?> > > -------end---------- > BTW, There is CONSTANT_ARRAY type in Zend, but it seems it > does not work. Is CONSTANT_ARRAY fully implemented? > How does it supposed to work? > > -- > Yasuo Ohgaki
PersistentData.sxw.pdf
Description: Adobe PDF document
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php