请写一段PHP代码,确保多个进程同时写入同一个文件成功
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请写一段PHP代码,确保多个进程同时写入同一个文件成功相关的知识,希望对你有一定的参考价值。
首先php是支持进程的而不支持多线程(这个先搞清楚了),如果是对于文件操作,其实你只需要给文件加锁就能解决,不需要其它操作,PHP的flock已经帮你搞定了。用flock在写文件前先锁上,等写完后解锁,这样就实现了多线程同时读写一个文件避免冲突。大概就是下面这个流程
/*
*flock(file,lock,block)
*file 必需,规定要锁定或释放的已打开的文件
*lock 必需。规定要使用哪种锁定类型。
*block 可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。
*lock
*LOCK_SH 要取得共享锁定(读取的程序)
*LOCK_EX 要取得独占锁定(写入的程序)
*LOCK_UN 要释放锁定(无论共享或独占)
*LOCK_NB 如果不希望 flock() 在锁定时堵塞
/*
if (flock($file,LOCK_EX))
fwrite($file,'write more words');
flock($file,LOCK_UN);
else
//处理错误逻辑
fclose($file);
) 参考技术A $file = fopen("test.txt","w+");
// 排它性的锁定 先锁上,写完,打开。
if (flock($file,LOCK_EX))
fwrite($file,"Write something");
// release lock
flock($file,LOCK_UN);
else
echo "Error locking file!";
fclose($file); 参考技术B 多进程写文件
function write_file($filename, $content)
$lock = $filename . '.lck';
$write_length = 0;
while(true)
if( file_exists($lock) )
usleep(100);
else
touch($lock);
$write_length = file_put_contents($filename, $content, FILE_APPEND);
break;
if( file_exists($lock) )
unlink($lock);
return $write_length;
写一个能创建多级目录的PHP函数
1.写一个能创建多级目录的PHP函数
2.写一段PHP代码,确保多个进程写入文件成功
3.写一个PHP函数,尽可能高效地从一个标准的url里取出文件的扩展名,例如:http://www.sina.com.cn/abc/de/fg.php?id=1需要取出php或者.php
方法一:
方法二:
4.写一个PHP函数,能够遍历一个文件夹下的所有文件和子文件夹
5.简述论坛中无限分类的实现原理
create table category(
cat_id smallint unsigned not null auto_increment primary key comment ‘类别ID‘,
cat_name varchar(30) not null default ‘‘ comment ‘类别名称‘,
parent_id smallint unsigned not null default 0 comment ‘类别父ID‘
)engine=MyISAM charset=utf8;
编写一个函数,递归遍历实现无限分类
6.写一个PHP函数,算出两个文件的相对路径,如$a = ‘/a/b/c/d/e.php‘;$b = ‘/a/b/12/34/c.php‘;计算出$b相对于$a的相对路径
7.写一个PHP函数去除HTML标签
方法一:使用PHP内建函数strip_tags()去除HTML标签
方法二:自定义函数
8.写一个函数验证电子邮件的格式是否正确(使用正则)
preg_match(‘/^[\\w\\-\\.][email protected][\\w\\-]+(\\.\\w+)+$/‘,$email);
9.PHP中判断一个字符是否是合法的日期格式
10.编写PHP函数取得上一月的最有一天
11.请使用PHP设计一个函数,对学生英语考试得分从高到低排序,输入时所有学生的学号和考试得分,返回排好序的考试得分和对应学生的学号。考试满分为100,得分可能会有小数,由于考试评分要求,小数位只会是0或0.5
以上是关于请写一段PHP代码,确保多个进程同时写入同一个文件成功的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript学习(八十)—请写一段JS程序提取URL中的各个get参数(参数名和参数个数不确定),将其按key-value形式返回到一个json结构中