我最近在 Scribd 上的一个演示文稿中读到,Facebook 对 APC 的各种锁定机制进行了基准测试,包括文件锁(默认)、IPC 信号量锁、linux Futex 锁、pthread 互斥锁和自旋锁。您可以通过单击以下链接查看此演示文稿:APC@Facebook
我想知道是否有人知道这些源代码是否已发布,也许在某个地方的 git 或 SVN 存储库中?从默认文件锁定切换到其他选择之一的速度优势似乎很重要。
是的,它们包含在http://pecl.php.net/package/APC的源代码中。
请注意,您必须在编译时选择它,更准确地说:在./configure时。以下是./configure的相关选项:
--enable-apc-sem Enable semaphore locks instead of fcntl
--disable-apc-pthreadmutex Disable pthread mutex locking
--enable-apc-spinlocks Enable spin locks EXPERIMENTAL
如您所见,pthread 互斥锁现在已经是默认设置了。
vi /etc/php.d/99_apc.ini
然后设置:
; Locking type = spinlock
extension = apc-spinlocks.so
或者
; Locking type = IPC Semaphore
extension = apc-sem.so
等等