php文件锁

  1. cpu的线程: 就代表同一时间可以做多少件事。
  2. 资源独占: 某个资源同一时间只能一个线程使用, 那就需要通过添加 排他锁, 来防止其他人使用。
  3. 共享锁: 一个资源可以被很多人查看, 但是查看的时候不能改。
//写文件的时候, 就需要添加 排他锁, 放置其他线程同时写入出现错乱
function put($path, $data) {
    $handle = fopen($path, 'w');

    //flock(); 加锁. 参数2代表锁的类型.
    //LOCK_EX: 排他锁
    if (flock($handle, LOCK_EX)) {
        //写入内容
        fwrite($handle, $data);
        //LOCK_UN: 解锁
        flock($handle, LOCK_UN);
    }
    fclose($handle);
}

//共享锁: 文件在被阅读的时候, 其他线程只能读不能改
function get($path) {
    $handle = fopen($path, 'r');

    //LOCK_SH: share共享
    if (flock($handle, LOCK_SH)) {
        //fread() 按字节读
        $text = fread($handle, filesize($path));
        //解锁
        flock($handle, LOCK_UN);
    }
    fclose($handle);
    return $text;
}

// echo get('d:/php7.0/php.ini');
put('abc.txt', 'AAAAAAAAAAA');

你可能感兴趣的:(PHP)