2017-08-17 115 views
0

我需要在缓存中保存一个半静态的大对象,所以我不需要每次从数据库请求它。类似于$ _SESSION,但与会话无关,因为数据对所有用户都是通用的。 我可以缓存客户端的数据,一旦我得到它,但我想避免干扰数据库选择大数据(几乎)不会改变的查询。PHP永久缓存数据

此外,我不能在此环境中添加模块(如APC缓存)。

我可以将我的数据存储到一个文件中,比如说一个JSON,我用php读取而不是查询数据库,但如果php每秒需要多次执行并且文件大小不是很小,则访问文件系统也会令人不安。

是否有内置的方式在PHP中存储内存中的对象,所有的PHP实例通用?

编辑:我可以使用$ _session作为存储空间,迫使session_id始终相同?危险吗?我不会为应用程序本身使用会话。我试过了,它能正常工作

+0

定义在真实世界单位,比如字节为单位的“半大”。 PHP并没有真正的共享内存,即使它确实是这个问题的一个非常粗略的解决方案。 – tadman

+1

您是否想过使用Redis?您可以使用名为Predis的PHP客户端。非常容易 – Chris

+0

半大意味着在这里5MBytes,但它可能很快就会变为15MB – Nillus

回答

0

大多数操作系统会将从磁盘读取的结果存储在其缓存中。

这意味着磁盘不会每次都被击中。基于文件的存储对于同一个文件的多次读取实际上非常快,因为它实际上只是从内存直接进行读取。

只要“相当大”仍然意味着装入内存这种方式应该是罚款

+0

在共享服务器上如何使用它,如Altervista?磁盘缓存不会被频繁刷新? – Nillus