linux的flock命令(文件锁)

摘要:
使用独占锁LOCK_EX,无论写入/读取都需要等待。LOCK_UN,无论使用共享/读占锁,使用完后需要解锁。LOCK_NB,当被锁定时,不阻塞,而是提示锁定。

mysql,如果多个请求同时,请求操作一个表,一个存,一个读,就会造成脏读.所以有了事务,有了锁表

linux在多个进程同时操作同一份文件的时候,很容易导致文件混乱,这时候就需要锁,来保证文件的完成性.

flock主要三种操作类型:
lock_sh,常被用作读共享锁;
LOCK_EX,只能被一个进行使用,常被用作写锁;
LOCK_UN,释放锁;
 public function logResult($word='') {
        $fp = fopen("log.txt","a");
        flock($fp, LOCK_EX) ;//进程会被阻塞,直到锁被释放掉
        fwrite($fp,"执行日期:".strftime("%Y%m%d%H%M%S",time())."".$word."");
        flock($fp, LOCK_UN);
        fclose($fp);
    }

使用共享锁LOCK_SH,如果是读取,不需要等待,但如果是写入,需要等待读取完成。

使用独占锁LOCK_EX,无论写入/读取都需要等待。

LOCK_UN,无论使用共享/读占锁,使用完后需要解锁。

LOCK_NB,当被锁定时,不阻塞,而是提示锁定。

免责声明:文章转载自《linux的flock命令(文件锁)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇EasyExcel注解方式导出数据过程解析VS2015更改生成程序exe的默认图标下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux文件锁的应用,POSIX,unix标准,linux标准

1. perl,flock加锁。java也能加锁。 2. 先创建文件并打开,才能加锁(写打开?)。 3. 可以用于判断进程是否一直在运行(用另一进程判断),如果锁一直在,则进程在;锁不在,则原进程或意外中断。 4. 可以用于互斥,使得同一时间只有一个脚本运行(一般使用非阻塞模式)。 5. 多进程系统中,文件锁可以用于进程互斥。 6. 为了避免对同一文件读写...

基于 Yii 2.0 高级模版的控制台命令实现定时任务的流程

、复制vendoryiisoftyii2consolecontrollersCacheController.php至consolecontrollersLuaGameTeamSkillController.php,如图1 图1 2、将consolecontrollersLuaGameTeamSkillController.php重命名为consolec...

细说php锁

bool flock ( int handle, int operation [, int &wouldblock] );flock() 操作的 handle 必须是一个已经打开的文件指针。operation 可以是以下值之一: 要取得共享锁定(读取程序),将 operation 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)...