PHP文件加锁实现多进程读写同一文件

2017-09-19  本文已影响0人  舒小贱

php是不支持多线程的,可以通过加锁来实现多进程同时操作同一文件:

<?php

$fp = fopen("1.txt", "w+");
if(flock($fp, LOCK_EX)){  //排他锁
    fwrite($fp, "writing something here \n");
    flock($fp, LOCK_UN);
}else{
    echo 'cannot lock the file';
}
fclose($fp);

flock函数的第二个参数的意义为:
要取得共享锁定(读取的程序),将 lock 设为 LOCK_SH(PHP 4.0.1 以前的版本设置为 1)。
要取得独占锁定(写入的程序),将 lock 设为 LOCK_EX(PHP 4.0.1 以前的版本中设置为 2)。
要释放锁定(无论共享或独占),将 lock 设为 LOCK_UN(PHP 4.0.1 以前的版本中设置为 3)。
如果不希望 flock() 在锁定时堵塞,则给 lock 加上 LOCK_NB(PHP 4.0.1 以前的版本中设置为 4)。

上一篇 下一篇

猜你喜欢

热点阅读