我刚注意到你在PHP中有函数系列:shm_*
是否有任何理由使用apc_fetch而不是
shm_attach()
shm_get_var()
在哪种情况下你应该使用一个或另一个? 感谢
答案 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文件系统。 (我从来没有真正使用它。)但无论如何,主要区别在于它的目的是与原生应用程序连接。