php 文件锁flock使用

$pid = posix_getpid();
try {
    #$fp = new SplFileObject("./flock.pid", "w+");
    $fp = fopen("./flock.pid", 'r+');
    echo print_r($fp, true).PHP_EOL;


    echo "is_resource:".json_encode(is_resource($fp)).PHP_EOL;
    echo "pid:".$pid.PHP_EOL;
    $bRet = flock($fp, LOCK_EX | LOCK_NB, $wblock);
    echo "{$pid}| sleep(5) ....".PHP_EOL;
    sleep(5);
    echo "{$pid}|bRet:".json_encode($bRet)."|wblock:".json_encode($wblock).PHP_EOL;
    if($bRet) {
        fwrite($fp, "pid:".posix_getpid());
    }
    fclose($fp);


    echo "is_resource:".json_encode(is_resource($fp)).PHP_EOL;
    $bRet = flock($fp, LOCK_EX | LOCK_NB, $wblock);
    echo "{$pid}| sleep(5) ....".PHP_EOL;






    echo "sleep(5) 2 ...".PHP_EOL;
    sleep(5);

    fwrite($fp, "pid:".posix_getpid());

 fflush($fp);            // flush output before releasing the lock
 
flock($fpLOCK_UN);

    echo print_r($fp, true).PHP_EOL;
    echo "{$pid} | done ...".PHP_EOL;
} catch(Exception $err) {
    echo "{$pid}|Exception:".$err->getMessage().PHP_EOL;

}


未设置LOCK_NB 则wblock返回0 

flcose($fp) 后 fwrite和flock都会报warning错误 且flock返回false wblock返回”“



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值