在脚本和一些类似PHP服务器的脚本之间共享变量(数组)

在脚本和一些类似PHP服务器的脚本之间共享变量(数组),php,websocket,Php,Websocket,我正在运行一些PHP websocket服务器脚本。基本上,服务器脚本应该24小时运行。 他们应该能够访问一个不像数组那样大的对象,可能是2k到5k的项目。类似PHP服务器的脚本应该能够写入/读取共享数组。 其他PHP脚本(由异步随机ajax调用触发)应该能够读/写共享数组。我用shmop做了一些测试,我不满意我需要序列化数据以存储为字符串,我担心并发性。 我不知道如何进行。性能应该是主要目标,而不是数据安全。有什么建议吗?在您描述的情况下,没有比共享内存更好的存储解决方案了 如果您只关心批量数

我正在运行一些PHP websocket服务器脚本。基本上,服务器脚本应该24小时运行。 他们应该能够访问一个不像数组那样大的对象,可能是2k到5k的项目。类似PHP服务器的脚本应该能够写入/读取共享数组。 其他PHP脚本(由异步随机ajax调用触发)应该能够读/写共享数组。我用shmop做了一些测试,我不满意我需要序列化数据以存储为字符串,我担心并发性。
我不知道如何进行。性能应该是主要目标,而不是数据安全。有什么建议吗?

在您描述的情况下,没有比共享内存更好的存储解决方案了

如果您只关心批量数据的访问时间,那么SHM就是您的“追求”。 您可以简单地创建包装器来维护代码中的序列化和存储


如果需要以某种方式(索引/排序)存储和访问数据,您应该尝试使用类似sqlite的方法,将文件存储在tmpfs/ramfs(内存中)。

我不知道数据的格式,但您可以使用类似Redis的内存数据存储。谢谢,我会尝试Redis,我确实尝试过PostgreSQL,在一个未标记的表中,我计算了在服务器脚本的完整循环期间从服务器访问数据所消耗的时间,这占用了大部分时间。你知道我期望Redis的执行速度比PostgreSQL快多少吗?它存储在内存中,所以除非你能将数据库存储在PostgreSQL内存中,否则它会快很多。你对序列化的看法是正确的,我做了一些测试,与在当前PostgreSQL数据库上运行查询相比,它快150到200倍。此外,向共享内存段写入/读取字符串的速度非常快。我唯一关心的是并发性和序列化表示的可变大小。我应该保留足够大的内存段吗?同时使用来自多个脚本的开放共享内存段并向其中读/写数据是否安全?我是否可以检查共享段是否打开,并强制脚本尝试更新到循环中,直到段关闭?