[one_demo_1]php中的文件锁
<?php
/**
* 使用php的文件锁解决高并发下操作数据库可能出现的争抢数据问题
* 与mysql的锁表相比的优势,不影响此表被其他功能使用。
* 应用场景:购物秒杀,各种票的抢票等。
* create table a(id smallint);
* insert into a values (100);
*/
error_reporting(0);
mysql_connect('localhost', 'root', '123456');
mysql_select_db('testphp');
//创建一个文件,打开它,加排它锁
$fp = fopen('./a.lock', r);
flock($fp, LOCK_EX);
$rs = mysql_query('select id from a');
$id = mysql_result($rs, 0, 0);
if($id > 0)
{
$id --;
mysql_query('update a set id ='.$id);
}
//解锁这个文件,关闭文件
flock($fp, LOCK_UN);
fclose($fp);
//使用apache的ab.exe文件做压力测试
//cmd中,在apche的bin目录下,ab.exe -c 20 -n 20 http://www.php2.com/suo/suodemo.php