广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php flock函数介绍和使用方法
  • 242
分享到

php flock函数介绍和使用方法

2024-04-02 19:04:59 242人浏览 独家记忆
摘要

这篇文章为大家带来有关PHP中flock函数的详细介绍。大部分实例都可以应用到工作中,为此分享给大家做个参考。一起跟随小编过来看看吧。bool flock ( resource $handle , int

这篇文章为大家带来有关PHP中flock函数的详细介绍。大部分实例都可以应用到工作中,为此分享给大家做个参考。一起跟随小编过来看看吧。

bool flock ( resource $handle , int $operation [, int &$wouldblock ] )

flock()允许执行一个简单的可以在任何平台中使用的读取/写入模型(包括大部分的Unix派生版和windows

php 5.3.2版本之前,会被 fclose() 释放(在脚本结束后会自动调用),现在需要手动解锁

operation

1.LOCK_SH 取得共享锁(读取的程序)

2.LOCK_EX 取得独占锁(写入的程序)

3.LOCK_UN 释放锁定 (无论共享或独占)

4.LOCK_NB 在flock()锁定时不阻塞

实例1:A使用独占锁写文件,B读取文件,阻塞

a.php

<?php
$file = 'test.txt';
$fp = fopen($file, 'w');
if(flock($fp, LOCK_EX)){            // 取得独占锁
    fwrite($fp, "Hello World\r\n"); // 写入数据
    sleep(10);                      // sleep 10秒,文件被锁定
    fwrite($fp, "Hello PHP\r\n");   // 写入数据
    flock($fp, LOCK_UN);            // 解锁
}
fclose($fp);
?>

b.php

<?php
$file = 'test.txt';
$fp = fopen($file, 'r');
if(flock($fp, LOCK_SH)){ // 取得贡献锁
    while(!feof($fp)){
        echo fread($fp, 100);
    }
    flock($fp, LOCK_UN);
}
fclose($fp);
?>

先执行a.php,然后执行b.php

a取得独占锁,b只能等待,等a执行完解除锁定后才能执行b,阻塞

实例2:A,B都使用共享锁,不阻塞

a.php

<?php
$file = 'test.txt';
$fp = fopen($file, 'r');
if(flock($fp, LOCK_SH)){ // 取得共享锁
    sleep(10);           // sleep 10秒
    while(!feof($fp)){
        echo fread($fp, 100);
    }
    flock($fp, LOCK_UN);
}
fclose($fp);
?>

b.php

<?php
$file = 'test.txt';
$fp = fopen($file, 'r');
if(flock($fp, LOCK_SH)){ // 取得共享锁
    while(!feof($fp)){
        echo fread($fp, 100);
    }
    flock($fp, LOCK_UN);
}
fclose($fp);
?>

先执行a.php,然后执行b.php

b不需要等待a执行完就能输出文件内容,非阻塞

实例3:A,B都使用独占锁写文件,阻塞

a.php

<?php
$file = 'test.txt';
$fp = fopen($file, 'a');
if(flock($fp, LOCK_EX)){            // 取得独占锁
    fwrite($fp, "Hello World\r\n"); // 写入数据
    sleep(10);                      // sleep 10秒,文件被锁定
    fwrite($fp, "Hello PHP\r\n");   // 写入数据
    flock($fp, LOCK_UN);            // 解锁
}
fclose($fp);
?>

b.php

<?php
$file = 'test.txt';
$fp = fopen($file, 'a');
if(flock($fp, LOCK_EX)){                    // 取得独占锁
    fwrite($fp, "How Are You\r\n");         // 写入数据
    fwrite($fp, "Show Me The Money\r\n");   // 写入数据
    flock($fp, LOCK_UN);                    // 解锁
}
fclose($fp);
?>


先执行a.php,然后执行b.php

b需要等待a执行完,才能写入数据,阻塞

实例4:LOCK_NB 锁定时不阻塞,不等待

a.php

<?php
$file = 'test.txt';
$fp = fopen($file, 'a');
if(flock($fp, LOCK_EX)){            // 取得独占锁
    fwrite($fp, "Hello World\r\n"); // 写入数据
    sleep(10);                      // sleep 10秒,文件被锁定
    fwrite($fp, "Hello PHP\r\n");   // 写入数据
    flock($fp, LOCK_UN);            // 解锁
}
fclose($fp);
?>

b.php

<?php
$file = 'test.txt';
$fp = fopen($file, 'a');
if(flock($fp, LOCK_EX|LOCK_NB)){            // 取得独占锁
    fwrite($fp, "How Are You\r\n");         // 写入数据
    fwrite($fp, "Show Me The Money\r\n");   // 写入数据
    flock($fp, LOCK_UN);                    // 解锁
}else{
    echo 'file locked';
}
fclose($fp);
?>

先执行a.php,然后执行b.php

b取不到独占锁,不需要等待a执行完,而是直接返回取不到锁提示,非阻塞

总结:

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

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

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

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

看完上述内容,你们掌握flock函数的使用方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网PHP编程频道,感谢各位的阅读!

--结束END--

本文标题: php flock函数介绍和使用方法

本文链接: https://www.lsjlt.com/news/34564.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php flock函数介绍和使用方法
    这篇文章为大家带来有关php中flock函数的详细介绍。大部分实例都可以应用到工作中,为此分享给大家做个参考。一起跟随小编过来看看吧。bool flock ( resource $handle , int ...
    99+
    2022-10-18
  • 详细介绍PHP函数和方法的区别
    随着互联网技术的发展,PHP已经成为了非常流行的开发语言之一。身为一个PHP开发者,了解PHP函数和方法的区别是非常重要的,因为它们在编写代码的时候都是必不可少的。在本文中,我们将详细介绍PHP函数和方法的区别。PHP函数是一段可重复使用的...
    99+
    2023-05-14
    php php函数
  • C语言rand和srand函数使用方法介绍
    目录前言随机数的本质重新播种生成一定范围内的随机数连续生成随机数前言 在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌。 在C语言中...
    99+
    2023-02-11
    C语言rand和srand C语言rand方法 C语言srand方法
  • length函数用法介绍
    length函数用于返回指定字符串的字符数或字节数。可以用于计算字符串的长度,以便在查询和处理字符串数据时进行操作和判断。 需要注意的是length函数计算的是字符串的字符数,而不是字节数。对于多字节字符集,一个字符可能由多个字节组成。因此...
    99+
    2023-10-22
    length length()函数
  • Golang内置函数使用方法详细介绍
    Golang是一种非常强大的编程语言,其提供许多内置函数以方便开发者进行编程。在本文中,我们将详细介绍Golang内置函数的使用方法,以供开发者参考。make函数make函数主要用于创建一个数据类型的对象(slice、map或channel...
    99+
    2023-05-16
    Golang(Go语言) 内置函数(built-in functions) 使用方法(usage methods)
  • Golang函数的锁类型介绍和应用方法
    Golang 函数的锁类型介绍和应用方法Go 编程语言是一种高效、可扩展、并发安全的语言,而并发安全正是 Golang 的一大亮点。我们通常会在开发过程中使用锁来确保线程安全,Golang 的标准库提供了多种类型的锁,用于不同的场景。在本文...
    99+
    2023-05-18
    Golang 应用方法 函数锁
  • Python函数介绍:ord函数的用法和示例
    Python函数介绍:ord函数的用法和示例Python作为一种高级编程语言,提供了许多内置的函数,其中之一就是ord函数。ord函数常用于获取字符的ASCII码值。在本篇文章中,我们将学习ord函数的用法并给出实际的代码示例。ord函数的...
    99+
    2023-11-04
    用法 示例 ord函数
  • Python函数介绍:divmod函数的用法和示例
    Python函数介绍:divmod函数的用法和示例在Python中,divmod() 函数用于求两个数的整数商和余数。这个函数接受两个参数,被除数和除数,并返回一个包含整数商和余数的元组。divmod(x, y) 返回的结果是一个包含两个元...
    99+
    2023-11-04
    Python 函数 关键词提取:
  • Python函数介绍:getattr函数的用法和示例
    Python函数介绍:getattr函数的用法和示例在Python中,getattr()是一个内置函数,用于获取对象的属性值。在不知道对象的属性名称的情况下,可以使用getattr()函数来动态地访问属性。本文将介绍getattr()函数的...
    99+
    2023-11-04
    用法 示例 getattr
  • Python函数介绍:hex函数的用法和示例
    Python函数介绍:hex函数的用法和示例Python是一种非常强大且广泛使用的编程语言,它提供了许多内置函数来方便我们实现各种操作。其中,hex函数就是一个十分有用的函数,它可以将整数转换成十六进制表示的字符串。本篇文章将介绍hex函数...
    99+
    2023-11-04
    示例 Python函数 hex函数
  • Python函数介绍:hash函数的用法和示例
    Python函数介绍:hash函数的用法和示例简介在Python中,hash函数是一个内置函数,它用于生成对象的哈希值。哈希值是将任意长度的二进制值映射为固定长度的唯一值的算法结果。哈希函数的作用是让数值具有良好的分布性并且能够快速定位。在...
    99+
    2023-11-04
    用法 示例 关键词提取:Python函数 hash函数
  • Python函数介绍:round函数的用法和示例
    Python函数介绍:round函数的用法和示例概述:在Python中,round()是一个内置函数,用于对数字进行四舍五入。它可以将浮点数或整数值四舍五入到指定的小数位数。round()函数具有以下语法形式:round(number, n...
    99+
    2023-11-03
    round函数:舍入 示例:四舍五入 用法:数据舍入
  • Python函数介绍:repr函数的用法和示例
    Python函数介绍:repr函数的用法和示例Python是一种广泛应用于各种领域的高级编程语言,它为开发者提供了众多强大的函数和方法。其中,repr函数是一个非常有用的函数之一,它可以用于返回一个对象的字符串表示。在Python中,rep...
    99+
    2023-11-03
    Python 函数 repr函数
  • Python函数介绍:sorted函数的用法和示例
    Python函数介绍:sorted函数的用法和示例Python拥有许多内置函数,其中一个非常常用的函数是sorted()函数。sorted()函数用于对可迭代对象进行排序,并返回一个新的已排序的列表。本文将介绍sorted()函数的用法,并...
    99+
    2023-11-03
    函数 sorted 示例
  • Python函数介绍:sum函数的用法和示例
    Python函数介绍:sum函数的用法和示例Python作为一门强大和灵活的编程语言,提供了许多内置的函数来简化代码的编写和操作的实现。其中,sum函数是一个非常实用的函数,用于对序列中的元素求和。在本文中,我们将详细介绍sum函数的用法,...
    99+
    2023-11-03
    SUM函数 示例 关键词:Python函数
  • Python函数介绍:pow函数的用法和示例
    Python函数介绍:pow函数的用法和示例Python是一种多功能的编程语言,它提供了许多内置函数,可以帮助程序员更高效地完成任务。其中一个常用的内置函数是pow函数。pow函数用于计算一个数的幂,并返回计算结果。pow函数的使用方法很简...
    99+
    2023-11-03
    用法 示例 pow函数
  • Python函数介绍:abs函数的用法和示例
    Python函数介绍:abs函数的用法和示例一、abs函数的用法介绍在Python中,abs函数是一个内置函数,用于计算给定数值的绝对值。它可以接受一个数字参数,并返回该数字的绝对值。abs函数的基本语法如下:abs(x)其中,x是要计算绝...
    99+
    2023-11-03
    用法 示例 Python函数 ABS函数
  • Python函数介绍:dir函数的用法和示例
    Python函数介绍:dir函数的用法和示例Python是一种开源的、高级的、解释性的编程语言。它可用于开发各种类型的应用程序,包括Web应用程序、桌面应用程序和游戏等。Python提供了大量的内置函数和模块,这些函数和模块可以帮助程序员快...
    99+
    2023-11-03
    Python函数 关键词: dir函数 用法示例
  • Python函数介绍:type函数的用法和示例
    Python函数介绍:type函数的用法和示例Python是一种强大而灵活的编程语言,提供了许多内置函数帮助我们编写更高效的代码。其中一个非常有用的函数是type()函数。type()函数可以帮助我们确定一个对象的类型,并返回类型的名称。在...
    99+
    2023-11-03
    示例 Python函数 type函数
  • Python函数介绍:isinstance函数的用法和示例
    Python函数介绍:isinstance函数的用法和示例Python是一门功能强大的编程语言,提供了许多内置函数,使得编程变得更加方便和高效。其中一个非常有用的内置函数是isinstance()函数。本文将介绍isinstance函数的用...
    99+
    2023-11-04
    用法 示例 Python函数 isinstance函数
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作