search
Homephp教程php手册模拟flock实现文件锁定
模拟flock实现文件锁定Jun 13, 2016 pm 12:34 PM
flockmainandaccomplishIdeassupplydocumentsimulationLocklocking

主要提供了一种思路。
  $lock0和$lock1就是文件锁定的标识符,当文件被某一用户打开的时候,$lock0和$lock1就会产生,当该文件没打开则不存在。
  其实最关键就是有个标识符来表示当前这个文件的状态, $lock0和$lock1就是起这样的作用。

复制代码 代码如下:



// Lock a file, timing out if it takes too long.  
function lock ($lock, $tries) {  
       $lock0 = ".{$lock}0";  
       $lock1 = ".{$lock}1";  
       for ($i=0; $i               if (!is_file($lock0)) {  
                       touch($lock0);  
                       if (!is_file($lock1)) {  
                               touch($lock1);  
                               return 1;  
                       }  
               }  
               usleep(100);  
       }  
       return 0;  
}  

// Unlock a file.  
function unlock ($lock) {  
       unlink(".{$lock}1");  
       unlink(".{$lock}0");  
}  

// Usage example.  
$filename = "somefile";  
$data = "stuff and thingsn";  
$tries = 10;  
if (lock($filename, $tries)) {  
       $h = fopen($filename, "a") or die();  
       fwrite($h, $data);  
       fclose($h);  
       /**  
         * 另外一个进程写文件,检查是否锁定  
       */  
       if (lock($filename, $tries)) {  
               $h2 = fopen($filename, "a") or die();  
               fwrite($h2,'check lock');  
               fclose($h2);  
        }else{  
            //die("Failed to lock $filename after ".($tries*100)." milliseconds!";  
        }  
        unlock($filename);  
} else {  
       //die("Failed to lock $filename after ".($tries*100)." milliseconds!";  
}  
?> 

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
如何在PHP中实现SEO优化如何在PHP中实现SEO优化May 20, 2023 pm 01:30 PM

随着互联网的发展,SEO(SearchEngineOptimization,搜索引擎优化)已经成为了网站优化的重要一环。如果您想要使您的PHP网站在搜索引擎中获得更高的排名,就需要对SEO的内容有一定的了解了。本文将会介绍如何在PHP中实现SEO优化,内容包括网站结构优化、网页内容优化、外部链接优化,以及其他相关的优化技巧。一、网站结构优化网站结构对于S

如何在PHP中实现ERP系统如何在PHP中实现ERP系统May 20, 2023 pm 06:21 PM

随着电子商务和企业管理的发展,许多企业开始寻找更好的方法来处理其日常业务流程。ERP系统是一种能够整合企业各种业务流程的软件工具。它提供了全面的功能,包括生产、销售、采购、库存、财务等方面,帮助企业提高效率、控制成本和提高客户满意度。而在PHP编程语言中,也能够实现ERP系统,这就需要我们掌握一些基本的知识和技术。下面,我们将深入探讨如何在PHP中实现ERP

把Transformer当通用计算机用,还能执行in-context learning算法,这项研究脑洞大开把Transformer当通用计算机用,还能执行in-context learning算法,这项研究脑洞大开Apr 13, 2023 am 11:31 AM

Transformer 已成为各种机器学习任务的热门选择,并且取得了很好的效果,那它还能怎么用?脑洞大开的研究者竟然想用它来设计可编程计算机!这篇论文的作者来自普林斯顿大学和威斯康星大学,标题为《Looped Transformers as Programmable Computers》,旨在探索如何用 Transformer 来实现通用计算机。具体来说,作者提出了一个将 transformer 网络用作通用计算机的框架,方法是使用特定权重对它们进行编程并将它们置于循环(loop)中。在这个框架

AI模拟器拿下物理仿真新SOTA!AI模拟器拿下物理仿真新SOTA!Feb 19, 2024 pm 06:50 PM

机器学习让计算机图形学(CG)仿真更真实了!方法名为神经流向图(NeuralFlowMaps,NFM),四个涡旋的烟雾也能精确模拟的那种:更为复杂的也能轻松实现:要知道,在这个AI应用满天飞的时代,CG物理仿真仍然是传统数值算法的天下。△NFM模拟“蛙跳”尽管神经网络应用在CG能创造目眩神迷的视觉效果,它却无法严格、鲁棒地描述物理性质。△NFM模拟“墨滴”也正是因此,基于神经网络的物理仿真至今还处于概念验证(proofofconcept)的阶段,所生成的效果也远非SOTA。为了解决这个复杂问题,

在PHP中如何实现物联网开发?在PHP中如何实现物联网开发?May 12, 2023 am 11:51 AM

随着物联网技术的发展和普及,越来越多的应用场景需要使用PHP语言进行物联网开发。PHP作为一种广泛应用于Web开发的脚本语言,它的易学易用、开发速度快、可扩展性强等特点,使其成为开发物联网应用的一种优秀选择。本文将介绍在PHP中实现物联网开发的常用技术和方法。一、传输协议和数据格式物联网设备通常使用TCP/IP或UDP协议进行数据传输,而HTTP协议是一个优

如何在PHP中实现CRM系统如何在PHP中实现CRM系统May 20, 2023 pm 12:31 PM

随着企业的发展,客户管理变得越来越重要。为了提高客户满意度和忠诚度,越来越多的企业采用客户关系管理系统(CRM)来帮助其管理客户关系。而PHP是一种流行的编程语言,因其简单易学、灵活和强大而被广泛应用于Web开发。那么,如何在PHP中实现CRM系统呢?本文将为您介绍实现CRM系统的步骤和技巧。Step1:需求分析在开始开发CRM系统之前,您需要进行需求分析

Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile 详细教程!Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile 详细教程!Feb 23, 2024 pm 09:01 PM

在Linux中,有几种常用的文件锁定命令,包括flock、fcntl、lockfile和flockfile。这些命令用于在多进程或多线程环境中对文件进行互斥访问。下面是这些命令的详细教程:flock命令:flock命令可以在Shell脚本中使用,用于对文件进行独占锁定。使用以下语法来锁定文件:flock[选项]文件名命令例如,要锁定名为file.txt的文件并执行命令,可以运行以下命令:flockfile.txtls-lflock命令会在执行命令期间锁定文件,并在命令完成后自动释放锁定。fcnt

如何在PHP中实现验证码如何在PHP中实现验证码May 20, 2023 am 11:31 AM

随着互联网的不断发展,越来越多的网站需要使用验证码来保证安全性。验证码是一种借助人类能力而无法被计算机破解的认证技术,广泛应用于网站注册、登录、找回密码等功能中。下面将介绍如何使用PHP实现验证码功能。一、生成验证码图片验证码图片的生成是验证码功能的核心,需要生成一个随机字符,并将其渲染为图像展示给用户。在PHP中,可以使用GD库来生成图片。GD库是一种用于

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),