laruence / yac

A fast, lock-free, shared memory user data cache for PHP
Other
825 stars 199 forks source link

在cli模式时,yac缓存不能在多个php进程间共享 #61

Closed marspalepurple closed 8 years ago

marspalepurple commented 8 years ago

我在多台机器(web,后台定时job)使用yac共享了一些配置(Shared memory model => mmap)。 在nmap.c中,yac申请了匿名共享内存: first_segment.common.p = mmap(0, allocate_size, PROT_READ | PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0); 所以在fpm模式,多个php请求可以共享yac中的配置缓存,但是在定时任务服务器,多个php定时任务是不能共享yac中的配置缓存。 这样定时job服务器就不能使用yac缓存配置信息了,和web不统一。

如果暴力的修改nmap.c参数,多个没有亲缘关系的进程共享一个fd,取消MAP_ANONYMOUS,不知道会不会有什么风险..

hlxabcd commented 8 years ago

确实困扰了好久,放弃cli下使用了,烦请鸟哥帮忙解答

laruence commented 8 years ago

Yac不适合你的场景, 你可以考虑memcached, 或者其他的. yac的定义就是同族进程间共享cache