work进程间通信

daling

小量数据需要在work进程间交换,其中只有一个work进程在写数据,其它work进程读取数据,尝试使用PHP自带的SHMOP来共享数据,但是这也涉及各进程获取shmop_open()返回的资源标识符问题,请教下如何在各work进程里获取shmop_open()返回的资源标识符?
1、如果用到MYSQL、REDIS等的话,就没必要用SHMOP了,mysql、redis足够处理本应用的并发了,但是因为数据量小,然而新数据产生比较密集,又不要求可靠性,只重视IO效率,所以MYSQL、REDIS等存储的连接及其它开销,就舍弃了他们;
2、GlobalData或者Channel等组件,需要对应 C / S端,觉得小数据量用不上这些组件,略显沉重。

使用文本文件存储标识符如何?会不会影响处理效率?
请教下@walkor,是否还有其他可行方法?

4139 4 0
4个回答

walkor

shmop_open()直接返回了资源,不清楚你说的 如何在各work进程里获取shmop_open()返回的资源标识符 是什么意思。

  • 暂无评论
daling

gateway开了8个BusinessWorker work进程,其中只有ID=0进程产生数据,利用SHMOP写入内存,其他七个进程需要读取ID=0进程创建的内存,这七个进程如何获取ID=0创建的资源标识符?

  • 暂无评论
walkor

shmop_open($key, .....) 第一个参数key是用来指定打开哪个共享内存的,所有进程都指定一个相同的key就ok了

  • 暂无评论
daling

谢谢!

  • 暂无评论
年代过于久远,无法发表回答
🔝