PHP写一段代码,确保多个进程同时写入一个文件成功

这个需求是在软件设计过程常见的加锁。
学计算机的同学都应该知道,这个是在《计算机操作系统》课程上有这个知识点。
主要要考虑的是进程的同步,也就是进程对资源的互斥访问。
OK,用程序说话吧!

<?php
function writefile( $filename, $data ){
 $fp = fopen(
$filepath, ‘a‘ );  
//以追加的方式打开文件,返回的是指针
 do{
    usleep( 100
);       //暂停执行程序,参数是以微秒为单位的
 }while( !flock( $fp, LOCK_EX )
);  //以独享写入的方式锁定文件,成功则返回TRUE,否则FALSE
}
 $res = fwrite( $fp,
$data."/n" );  // 以追加的方式写入数据到打开的文件
 flock( $fp, LOCK_UN
);      //解锁,以让别的进程进行锁定
 fcloce( $fp
);           //关闭打开的文件指针
 return $res;            //返回写入结果
?>

OK,代码还不算很多吧!这个不要记代码,重要的是要理解每一个函数的意思,以及每一个语句的意思。

PHP写一段代码,确保多个进程同时写入一个文件成功,布布扣,bubuko.com

时间: 2024-10-19 00:55:41

PHP写一段代码,确保多个进程同时写入一个文件成功的相关文章

假设写一段代码引导PC开机这段代码是 ? Here is a tiny &amp;quot;OS&amp;quot; :-D

Hello world -- OS 我找到了华科绍志远博士的相关代码,发现他依据MIT的JOS的boot.S 稍作改动.然后单独剥离出来,能够非常好玩~ 资料下载地址: http://download.csdn.net/detail/u011368821/8006465 原则上仅仅须要两个文件(boot.S mmu.h)就能够,可是我们这里还须要一些附带的虚拟器工具.以及makefile来做实验. 须要提示的就是地址0xb800是显存的开头地址 : ) MOVSB(MOVe String Byt

用for循环写这段代码

之前用while循环写了一段代码,现在改为用for循环来写,代码如下: hongtao_age = 38 for i in range(5): guess_age = int(input("Please guess the hongtao's age: ")) if guess_age == hongtao_age: print("================") print("Yes!you get it!!Good Bye!!") pri

如果写一段代码引导PC开机这段代码是 ? Here is a tiny &quot;OS&quot; :-D

Hello world -- OS 我找到了华科绍志远博士的相关代码,发现他根据MIT的JOS的boot.S 稍作修改,然后单独剥离出来,可以很好玩~ 资料下载地址: http://download.csdn.net/detail/u011368821/8006465 原则上只需要两个文件(boot.S mmu.h)就可以,但是我们这里还需要一些附带的虚拟器工具,以及makefile来做实验. 需要提示的就是地址0xb800是显存的开头地址 : ) MOVSB(MOVe String Byte)

day2:写几段代码

在linux公社找到本书<Python核心编程 第二版> 跳过前面32页的啰七八嗦,看代码~ 字符串替换 >>> print "%s's price is %d yuan" % ( "this tomato" , 6 ) this tomato's price is 6 yuan %s和%d是来占座的,分别占了字符串和整数的座.s代表string(字符串),d为啥代表整数我忘了-- 可以看出: 1.比起c++的printf,Python

用 wait-notify 写一段代码来解决生产者-消费者问题

在同步块中调用 wait() 和 notify()方法,如果阻塞,通过循环来测试等待条件.请参考答案中的示例代码. [生产者] import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; public class Producer implements Runnable { private final Vector sharedQueue; private final int

编程题目:写一段代码,判断包含括号 { [ ( ) ] } 的表达式是否合法

先入和元素后判断,后入的元素先判断.这符合栈的特征. 所以这里可以利用栈实现括号合法性的判断. 1 #!/usr/bin/env python3 2 3 def judge(expression): 4 s = Stack() 5 d = {'}':'{', ']':'[', ')':'('} 6 for i in expression: 7 if i == '[' or i == '{' or i == '(': 8 s.push(i) 9 if i == ']' or i == '}' or

javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数

1 function test(){ 2 var bt = document.getElementById("bt"); 3 bt.addEventListener("click",function(){ 4 5 var str = "dafdsjkfnaiesdaadsllllllkkkkk444444444444444"; 6 var obj = []; // 存放结果集的数组,结果中存放 key-value 对象 7 for(var i =

Win7旗舰版中的IIS配置asp.net 完美通过版,附代码 以及出现的 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\8d57d

先解决问题:“c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\8d57d 图: 其他的解决方案均没有成功如: 1 设置c:windows\temp 目录访问权限 temp--> 属性-->安全-- > 添加network service -->并赋予其权限为 读 和 写--> 确定 (注意:操作系统为windows server2003 framework 版本在 1.1

java ee文档327页两段代码总结

第一段代码不是异步进程,服务程序从请求中接收到一个参数,然后再从数据库或网页等资源中取到基于该参数的信息,这时这些资源进行的很慢,造成了堵塞操作,服务程序使用从资源中得到的结果引起响应. 第二段代码是异步进程,request.startAsync()使得请求处于异步进程,通过acontext.start(new Runnable() {...})进入一条新的线路,使用内部类的run()执行这条新的线路,内部类有读取请求的参数和写响应的异步环境的入口,再使用 complete()把响应发送到客户端