2009-11-04 96 views
2

我最近在關於Scribd的演示文稿中看到,Facebook已經對APC的各種鎖定機制進行了基準測試,包括文件鎖(默認),IPC信號鎖,linux Futex鎖,pthread互斥鎖和自旋鎖。您可以通過單擊以下鏈接查看此演示文稿:[email protected]如何更改替代PHP緩存(APC)中的鎖定機制?

我想知道是否有人知道如果有任何源代碼已發佈,可能是在某個git或SVN存儲庫中?從默認文件鎖定切換到其他選項之一的速度好處似乎很重要。

回答

6

是的,它們包含在可用的源代碼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 

正如你看到的,並行線程互斥鎖現在已經是默認的。

+0

嗯,當我建立3.1.9,對我來說默認爲文件鎖。在相關說明中,我遇到了以下錯誤:http://www.freshblurbs.com/apc-os-x-php-fatal-error-unknown-apc-fcntl-unlock-failed使用信號量或螺旋鎖似乎爲我工作。 – 2012-01-14 01:10:40

+0

@QuinnTaylor你可以在編譯之前用APC 3.1.9中的這個命令修復這個問題:'sed -i .bak -e's/#define apc_lck_rdunlock(a)apc_fcntl_unlock(&a TSRMLS_CC)/ #define apc_lck_rdunlock(a) apc_fcntl_unlock(a TSRMLS_CC)/ g「apc_lock.h」 – 2012-12-17 16:01:15

0
vi /etc/php.d/99_apc.ini 

然後設置:

; Locking type = spinlock 
extension = apc-spinlocks.so 

; Locking type = IPC Semaphore 
extension = apc-sem.so