PHP 中的文件鎖定功能非常的不穩(wěn)定。特別是和PHP 的版本 和 平臺(tái)也有很大的關(guān)系。
今天看了Zend_Search_Lucence 中的解決方案是這樣的:
先flock 一個(gè)文件,lock的模式是:flock($file, LOCK_EX | LOCK_NB)
如果下一個(gè)進(jìn)程再次訪問 $file, 那么因?yàn)闊o法再獲取 flock 的鎖定了,所以會(huì)返回一個(gè)false
代表文件被鎖定了,不能再進(jìn)行訪問了。
在 Zend_Search_Lucence 鎖定的時(shí)候主要是:
寫索引 讀取索引 優(yōu)化索引。
關(guān)于 LOCK_NB :
在linux 下面支持的比較好,但是windows 上,直到 php 5.2.1 才支持。
所以,要使用 Zend_Search_Lucence 最好 PHP 5.2.1 以上的版本。
如果版本低于 PHP 5.2.1,進(jìn)程會(huì)一直等待下去(因?yàn)閣indows下, 低于PHP 5.2.1 版本不支持非阻塞模式的鎖定)。
關(guān)于更新索引:
更新索引的時(shí)候,索引經(jīng)常會(huì)被鎖定。所以不推薦即時(shí)的更新索引,建議晚上訪問量比較小的時(shí)候再去更新索引。
Tag標(biāo)簽: Lucence,文件鎖定