shm_get_var vs apc_fetch

时间:2011-04-07 00:22:45

标签: php

我刚注意到你在PHP中有函数系列:shm_*

是否有任何理由使用apc_fetch而不是

shm_attach()
shm_get_var() 

在哪种情况下你应该使用一个或另一个? 感谢

2 个答案:

答案 0 :(得分:2)

APC有大量的生产用途(Facebook大量使用APC,并提供了许多补丁)。

APC提供了几种经过良好测试的锁定方法。 shm_* doesn't offer any built in locking

  

请记住,共享内存不是   安全防止同时访问。使用   用于同步的信号量。

如果填满共享内存段,

shm_ *无法存储数据并抛出E_WARNING。如果内存不足,APC只会使旧密钥过期。

长话短说,你可能最终会重新发明很多APC的功能,而且它们不可避免地会表现得更糟,因为APC是用C语言编写的。

答案 1 :(得分:0)

它们提供了类似的功能,但目的不同。

APC是仅限PHP的功能。它不需要上下文切换,因此更有效地在Apache进程中的PHP运行时内共享数据。

SHM是一个Unix系统功能。它可用于与服务器上的本机代码或守护进程交换数据。它基本上只是Linux上的内存tmp文件系统。 (我从来没有真正使用它。)但无论如何,主要区别在于它的目的是与原生应用程序连接。