Rumah > pembangunan bahagian belakang > tutorial php > 解析PHP中flock()函数(附代码实例)

解析PHP中flock()函数(附代码实例)

autoload
Lepaskan: 2023-04-09 22:24:01
asal
2800 orang telah melayarinya

   2021042710283431040.jpg

     在PHP的使用过程中,我们经常需要对文件进行读取,但是为了防止其他进程对文件进行读取修改,避免冲突的发生,我们必须在文件读取时将文件锁定,然后对文件进行修改,直到完成操作,在这个过程中使用的是flock()函数,本文就带大家一起了解以下。首次,我们来看一看block()函数的语法:

flock( resource $handle, int $operation, int $wouldblock = ?)
Salin selepas log masuk
  • $handle:文件系统指针,是典型地由 fopen() 创建的 resource(资源)。

  • $operation:LOCK_SH取得共享锁定(读取的程序)。LOCK_EX 取得独占锁定(写入的程序。LOCK_UN 释放锁定(无论共享或独占)。如果不希望 flock() 在锁定时堵塞,则是 LOCK_NB(Windows 上还不支持)。

  • $wouldblock:如果锁定会堵塞的话(EWOULDBLOCK 错误码情况下),可选的第三个参数会被设置为 true。(Windows 上不支持)

  • 返回值:成功时返回 true, 或者在失败时返回 false

代码实例:

1.使用LOCK_EX

<?php
$fp = fopen("exit.txt", "r+");
if (flock($fp, LOCK_EX)) {  // 进行排它型锁定
    ftruncate($fp, 0);      // truncate file
    fwrite($fp, "Write something here");
    fflush($fp);            // flush output before releasing the lock
    flock($fp, LOCK_UN);    // 释放锁定
} else {
    echo "Couldn&#39;t get the lock!";
}
fclose($fp);
?>
Salin selepas log masuk
exit.text内容:Write something here
Salin selepas log masuk

2.使用LOCK_NB

<?php
$fp = fopen(&#39;exit.txt&#39;, &#39;r+&#39;);

/* Activate the LOCK_NB option on an LOCK_EX operation */
if(!flock($fp, LOCK_EX | LOCK_NB)) {
    echo &#39;Unable to obtain lock&#39;;
    exit(-1);
}

fclose($fp);


?>
Salin selepas log masuk

推荐:2021年PHP面试题大汇总(收藏)》《php视频教程

Atas ialah kandungan terperinci 解析PHP中flock()函数(附代码实例). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan