PHP 如何使用文件锁//WRITE
$fp = fopen("test.txt", 'ab');//From the end
flock($fp, LOCK_EX);//lock the file for waiting...
fwrite($fp, 'Just A Test String.......');//Start writing...
flock($fp, LOCK_UN);//Release write lock
fclose($fp);//Close the file读操作:
//READ
$fp = fopen("test.txt", 'r');
flock($fp, LOCK_SH);
//Read from the file.......
flock($fp, LOCK_UN);
fclose($fp);来详细的看看 PHP 手册上面关于函数 flock 的介绍吧:
flock -- 轻便的咨询文件锁定
其函数原型为:bool flock ( int handle, int operation [, int wouldblock] )
PHP 支持以咨询方式(也就是说所有访问程序必须使用同一方式锁定, 否则它不会工作)锁定全部文件的一种轻便方法,需要注意的地方是:在 Windows 下 flock() 将会强制执行 。flock() 操作的 handle 必须是一个已经打开的文件指针 。operation 可以是以下值之一:
要取得共享锁定(读取的程序),将 operation 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1) 。
要取得独占锁定(写入的程序),将 operation 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2) 。
要释放锁定(无论共享或独占),将 operation 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3) 。
如果不希望 flock() 在锁定时堵塞,则给 operation 加上 LOCK_NB(PHP 4.0.1 以前的版本中设置为 4) 。flock() 允许执行一个简单的可以在任何平台中使用的读取/写入模型(包括大部分的 Unix 派生版和甚至是 Windows) 。如果锁定会堵塞的话(EWOULDBLOCK 错误码情况下) , 可选的第三个参数会被设置为 TRUE 。锁定操作也可以被 fclose() 释放(代码执行完毕时也会自动调用) 。如果成功则返回 TRUE,失败则返回 FALSE 。
什么是php锁定文件语法
flock(file,lock,block)
参数
描述
file必需 。规定要锁定或释放php数据库锁文件的已打开php数据库锁文件的文件 。
lock必需 。规定要使用哪种锁定类型 。
block可选 。若设置为 1 或 truephp数据库锁文件,则当进行锁定时阻挡其php数据库锁文件他进程 。
说明
flock() 操作php数据库锁文件的 file 必须是一个已经打开的文件指针 。
lock 参数可以是以下值之一:
要取得共享锁定(读取的程序),将 lock 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1) 。
要取得独占锁定(写入的程序),将 lock 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2) 。
要释放锁定(无论共享或独占) , 将 lock 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3) 。
PHP如何使用文件锁解决高并发问题?php
//连接数据库
$con=mysqli_connect("192.168.2.186","root","root","test");
//查询商品数量是否大于0,大于0才能下单,并减少库存
$fp = fopen("lock.txt", "r");
//加锁
if(flock($fp,LOCK_EX))
{
$res=mysqli_fetch_assoc(mysqli_query($con,'SELECT total FROM shop WHERE id=1 LIMIT 1'));
if($res['total']0){mysqli_query($con,'UPDATE shop SET total=total-1 WHERE id=1');}
//执行完成解锁
flock($fp,LOCK_UN);
}
//关闭文件
fclose($fp);
unset($res);
mysqli_close($con);
?
php mysql的锁机制 怎么写MYSQL中的锁:
语法 :
LOCK TABLE 表名1 READ|WRITE, 表名2 READ|WRITE .................. 【锁表】
UNLOCK TABLES【释放表】
Read:读锁|共享锁 : 所有的客户端只能读这个表不能写这个表
Write:写锁|排它锁: 所有当前锁定客户端可以操作这个表,其他客户端只能阻塞
注意:在锁表的过程中只能操作被锁定的表,如果要操作其他表,必须把所有要操作的表都锁定起来!
推荐阅读
- 角色扮演恋爱单机游戏,角色扮演恋爱文字剧情类游戏
- 为什么电脑键盘有电没反应,电脑键盘有电但是用不了
- java中的异常案例代码 java异常处理常见问题
- 包含如何高效深入学习电商的词条
- sqlserver时间查询速度慢,sql查询时间短
- 电脑的显示器为什么不亮,为啥电脑显示器不亮
- 在c语言用函数方法求素数 c语言使用函数求素数之和
- 跨境电商如何卖到全球第一,跨境电商是真的还是假的
- gis如何做空间分布图,如何用gis做空间分布图