PHP文件锁同步实例
admin
2024-01-17 18:18:17

该文件锁达到的效果是:

PHP语言中:多个请求,在同一时间段内,访问同一段代码,改代码只能同时处理一个请求,其它的请求排队等候,等一个请求处理完后,再依次处理剩余的请求。

类似于Java的synchronized线程同步。

实现的步骤如下(使用过程中需要注意下文件锁所在路径需要有写权限):

1、编辑一个进程锁类CacheLock.class.php

 eAccelerator = function_exists("eaccelerator_lock");if (!$this -> eAccelerator) {$this -> path = $path.($this -> _mycrc32($name) % $this -> hashNum).'.txt';}$this -> name = $name;}/** * crc32 * crc32封装 * @param int $string * @return int */private function _mycrc32($string) {$crc = abs(crc32($string));if ($crc & 0x80000000) {$crc ^= 0xffffffff;$crc += 1;}return $crc;}/** * 加锁 * Enter description here ... */public function lock() {//如果无法开启ea内存锁,则开启文件锁 if (!$this -> eAccelerator) {//配置目录权限可写 //echo $this -> path;//die();$this -> fp = fopen($this -> path, 'w+');if ($this -> fp === false) {return false;}return flock($this -> fp, LOCK_EX);} else {return eaccelerator_lock($this -> name);}}/** * 解锁 * Enter description here ... */public function unlock() {if (!$this -> eAccelerator) {if ($this -> fp !== false) {flock($this -> fp, LOCK_UN);clearstatcache();}//进行关闭 fclose($this -> fp);} else {return eaccelerator_unlock($this -> name);}}
}

2、在 CacheLock.class.php文件的同级目录下新建一个lock的空文件夹

至此,已经配置完成。接下来就是测试使用。


3、分别建立讲个php文件index.php和index2.php。

index.php:

lock(); for($a=1;$a<5;$a++){file_put_contents("test.txt", "***********第一个文件[" . $a . "].\n", FILE_APPEND);sleep(2);echo '正在写入第  ' . $a . '个文件。';}/*	这里是要同步的代码块	结束	*/$lock->unlock(); 
?>

index2.php:

lock(); for($a=1;$a<5;$a++){file_put_contents("test.txt", "第二个文件[" . $a . "].\n", FILE_APPEND);sleep(2);echo '正在写入第  ' . $a . '个文件。';}/*	这里是要同步的代码块	结束	*/$lock->unlock(); 
?>

这两个文件代码几乎一模一样,只是输出文件(file_put_contents)的内容不一样,循环4次写入文件内容。

上一篇:四块玉别清

下一篇:王江南曰

相关内容

热门资讯

利欧股份诉揭阳市揭东区磐岭电排... 12月22日消息,天眼查数据显示,近日公布了一则利欧集团股份有限公司作为原告/上诉人的开庭公告,案号...
吴黎琴诉新华保险等人身保险合同... 12月22日消息,天眼查数据显示,近日公布了一则新华人寿保险股份有限公司作为被告/被上诉人的开庭公告...
湖北省两高校自主招生政策做出重... 湖北省两高校自主招生政策做出重要调整  中南大:笔试取消英语    昨日,中南财经政法大学公布了最新...
南方科技大学最新或2023(历... 南方科技大学最新或2023(历届)湖北自主招生:仅投放40个名额从南方科技大学获悉,南科大最新或20...
湖北省17所高中获清华大学最新... 湖北省17所高中获清华大学最新或2023(历届)自主招生20个推荐名额湖北省17所高中获清华大学最新...