当前位置:首页 > PHP

php 锁 三种实现

2026-02-28 04:01:59PHP

PHP 锁的三种实现方式

文件锁(flock)

使用 PHP 的 flock 函数对文件进行加锁,适用于单机环境。flock 支持共享锁(LOCK_SH)和独占锁(LOCK_EX)。

$fp = fopen("lockfile.lock", "w+");
if (flock($fp, LOCK_EX)) {
    // 执行需要加锁的代码
    flock($fp, LOCK_UN); // 释放锁
}
fclose($fp);

数据库锁

通过数据库的 SELECT ... FOR UPDATE 或事务隔离级别实现锁机制,适用于分布式环境。

$pdo->beginTransaction();
$stmt = $pdo->prepare("SELECT * FROM table WHERE id = 1 FOR UPDATE");
$stmt->execute();
// 执行需要加锁的代码
$pdo->commit();

Redis 锁

利用 Redis 的 SETNX(或 Redlock 算法)实现分布式锁,适用于高并发场景。

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$lockKey = 'resource_lock';
$expire = 10; // 锁超时时间(秒)

if ($redis->set($lockKey, 1, ['NX', 'EX' => $expire])) {
    // 执行需要加锁的代码
    $redis->del($lockKey); // 释放锁
}

注意事项

  • 文件锁仅适用于单机环境,性能较低。
  • 数据库锁可能影响数据库性能,需合理设计事务范围。
  • Redis 锁需处理锁超时和死锁问题,建议使用成熟的库(如 predisphpredis)。

php 锁 三种实现

标签: 三种php
分享给朋友:

相关文章

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="upload…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $imag…

php 实现下载

php 实现下载

PHP 实现文件下载的方法 使用 PHP 实现文件下载可以通过设置 HTTP 头信息,强制浏览器将文件作为附件下载而非直接打开。 基本下载实现 $file_path = 'path/to/your/…

php实现下载

php实现下载

PHP实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/to/…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php mvc实现

php mvc实现

PHP MVC 实现步骤 模型(Model)层 模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。 class Model { protected $db;…