PHP shmop如何在共享内存中存储数组
我需要将大约6-8GB的静态数据作为数组对象存储到共享内存中。数据是从数据库中提取的。我想使用fork()并允许子级根据索引访问和搜索数组中的元素 就我而言,我只能使用shmop()存储“字符串”。但是我想存储一个PHP识别为数组对象的数组PHP shmop如何在共享内存中存储数组,php,mysql,shared-memory,Php,Mysql,Shared Memory,我需要将大约6-8GB的静态数据作为数组对象存储到共享内存中。数据是从数据库中提取的。我想使用fork()并允许子级根据索引访问和搜索数组中的元素 就我而言,我只能使用shmop()存储“字符串”。但是我想存储一个PHP识别为数组对象的数组 有什么建议吗?shmop只能真正存储字符串。要存储数组,您需要在存储它之前对其进行序列化,并在使用它之前取消序列化。您始终可以序列化ArrayObject并使用Memcached将其存储在内存中 如果您想坚持使用shmop:因为shmop\u write()
有什么建议吗?shmop只能真正存储字符串。要存储数组,您需要在存储它之前对其进行序列化,并在使用它之前取消序列化。您始终可以序列化
ArrayObject
并使用Memcached将其存储在内存中
如果您想坚持使用shmop:因为shmop\u write()
使用字符串存储数据,所以您也需要在那里使用serialize()
方法。使用PHP的serialize()
函数
我建议编写一个类,负责对共享内存进行序列化/反序列化和写入/读取。看来这可以通过PHP实现 它在内部序列化对象。由于数据量巨大,性能会随着数据的增加而大幅下降。对于shmop和SEM来说,8GB(并且不断上升)的容量太大,无法有效处理 我的替代方法是在需要时简单地查询数据库(同时为每个线程存储本地缓存版本),我认为这会更快(尤其是使用SSD)。所以这些函数不是我要去做的