shmop / PHP 共享内存有多可靠?

Posted

技术标签:

【中文标题】shmop / PHP 共享内存有多可靠?【英文标题】:How reliable is shmop / PHP shared memory? 【发布时间】:2014-02-21 10:32:53 【问题描述】:

我有一些无法进一步优化的性能繁重的 SQL 查询。由于这些查询在 99% 的情况下提供相同的结果,因此我想实现一些缓存。

我发现 shmop / php 共享内存是几乎所有网络服务器上唯一可用的功能。 memcache、APC ... 通常不可用,尤其是在共享托管服务器上。

它通常工作得很好并且显着减少了负载。我知道一般的共享内存安全问题(每个人都可以读取数据),但无论如何我不会将它用于敏感信息,我将在顶部使用 mcrypt_decrypt。

但是,从长远来看,它在不同的网络服务器上运行的可靠性如何? 可以推荐用于一般用途吗? 是否有人在使用 shmop 时产生了负面影响,尤其是在 Windows 服务器上?

非常感谢。

【问题讨论】:

【参考方案1】:

我想你回答了你自己的问题。通常,数据是共享的,因此不安全。数据也可能随时丢失,因此不可靠,再次根据定义。

如果您希望以 99% 的相同结果改进 SQL,请记住 mysql 也有一个查询缓存,因此缓存已经为您工作,假设您已正确配置它。

如果你想在你的应用中做缓存,看看 Redis,特别是作为一个支持标记的 zend_cache 后端,允许你标记缓存的值并使用标记刷新。

【讨论】:

以上是关于shmop / PHP 共享内存有多可靠?的主要内容,如果未能解决你的问题,请参考以下文章

给PHP开启shmop扩展实现共享内存

给PHP开启shmop扩展实现共享内存

PHP共享内存的应用shmop系列

php操作共享内存shmop类及简单使用测试(代码)

在 PHP 中使用共享内存

PHP进程通信基础——shmop sem系列函数使用