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写一段代码,确保多个进程同时写入一个文件成功的更多相关文章
- 请写一段 PHP 代码 ,确保多个进程同时写入同一个文件成功
方案一: function writeData($filepath, $data) { $fp = fopen($filepath,'a'); do{ usleep(100); }while (!fl ...
- 写一段PHP代码,确保多个进程同时写入同一个文件成功(腾讯)
- 写一段php代码,确保报个进程同时写入同一个文件
- 写一段代码在遍历 ArrayList 时移除一个元素?
该问题的关键在于面试者使用的是 ArrayList 的 remove() 还是 Iterator 的 remove()方法.这有一段示例代码,是使用正确的方式来实现在遍历的过程中移 除元素,而不会出现 ...
- javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数
javascript 写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数 function test(){ var bt = document.getElementById(" ...
- 使用PHP文件锁写一个多个请求同时并发写入一个文件,要求不脏读、数据不丢失
使用PHP文件锁写一个多个请求同时并发写入一个文件,要求不脏读.数据不丢失. //并发文件操作 function filehandle($filename,$data){ $start = 0; $e ...
- 假设写一段代码引导PC开机这段代码是 ? Here is a tiny "OS" :-D
Hello world -- OS 我找到了华科绍志远博士的相关代码,发现他依据MIT的JOS的boot.S 稍作改动.然后单独剥离出来,能够非常好玩~ 资料下载地址: http://download ...
- 用for循环写这段代码
之前用while循环写了一段代码,现在改为用for循环来写,代码如下: hongtao_age = 38 for i in range(5): guess_age = int(input(" ...
- JavaScript-navigator_userAgent-编写一段代码能够区分浏览器的主流和区分
1 userAgent:包含浏览器名称和版本号的字符串 <!DOCTYPE html> <html> <head lang="en"> < ...
随机推荐
- 如何区分JS中的this?!
->我们一般只研究函数执行的时候里面的this->this是谁和当前的函数在哪执行和在哪定义没有半毛钱的关系 1)看函数执行的时候,函数名之前是否有".",有的话&qu ...
- jq事件冒泡问题
在程序中使用事件对象非常简单,只需为函数添加一个参数,jquery代码如下: $("element").bind("click",function(event) ...
- 故障模块名称: mso.dll
本人今天早上打开word文档的时候打不开了,反复试了n次也不成,一想八成儿要重新装了,结果我点开详细信息看了一下,看到了“故障模块名称: mso.dll”这个提示,结果我就放到了百度上找了一下,都是只 ...
- urllib,urllib2,requests对比
#coding:utf-8 import urllib2 import urllib import httplib import socket import requests #实现以下几个方面内容: ...
- 26 个 jQuery使用技巧
1. 禁用右键点击(Disable right-click) $(document).ready(function(){ $(document).bind("contextmenu" ...
- unity 合并skinnedMeshRenderer中遇到的一个大坑
将多个skinnedMeshRenderer合并成一个skinnedMeshRenderer,主要涉及的mesh合并.骨骼列表合并.重定向顶点骨骼索引.其中重定向顶点骨骼索引只是通过加偏值即可完成,所 ...
- OpenJudge计算概论-校门外的树
/*======================================================================== 校门外的树 总时间限制: 1000ms 内存限制: ...
- WebLogic11g-半小时让你的domain集群化
WebLogic11g-半小时让你的domain集群化 WebLogic11g-负载分发 weblogic proxy.war配置 web.xml <!DOCTYPE web-app PUBLI ...
- PERCENT_RANK
1. percent_rank() over (order by .....) 返回某列或某列组合后每行的百分比排序 如下: with cte as( SELECT ROWNUM as n FRO ...
- 异机恢复 RMAN-06023: no backup or copy of datafile 17 found to restore
前不久因工作需要使用RMAN异机恢复,很基础也很具有代表性和普遍性,希望对需要的人有所帮助. 具体过程如下: 先拷贝原库的口令文件和参数文件到备库. 然后使用如下脚本对原库进行备份: run { al ...