[并发编程]php5新特性之file_put_contents()和json_encode()函数实例,file_put_contents上锁防止写乱之参数LOCK_EX参数,防止多人同时写入造成内容丢失。

jackxiang 2008-10-30 15:21 | |
并发编程:
<?php
//pup5新支持功能file_put_contents()
$content = '你好';
file_put_contents('file.txt',$content);
//file_put_contents($curl_url_info["error_log_file"],$url_get_str,FILE_APPEND);
//FILE_APPEND  追加写。。。

//输出json格式数据
$hello = array('1','2','3');
$helloJson = json_encode($hello);
//print_r($helloJson);
//exit;
echo <<<eot
<script language="JavaScript" type="text/JavaScript">
//在javascript中新建一个对象json_js,输出的代码为var json_js = ["1","2","3"];
var json_js = $helloJson;
//看看效果
//弹出窗口显示1
alert(json_js[0]);
alert(json_js[1]);
</script>
eot;
?>


———————————————————————————————————————————————————————————
最近有个项目需要用file_put_contents函数写txt文件,由于需要频繁操作,所以经常出现前半截内容缺失的情况,非常苦恼。

后来查询资料发现,file_put_contents函数有个参数LOCK_EX非常有用,加上它之后,再也没有出现过内容缺失的情况了。

这个参数LOCK_EX的意思很直白,就是写文件时,先锁上这个文件,这样只允许某个客户端访问的时候写,其他客户端访问不能写了。

我的用法如下:
file_put_contents($file, $content, FILE_APPEND|LOCK_EX)
解释:
$file=>这个是写入文件的路径+文件名
$content=>这个是写入文件的内容
FILE_APPEND=>直接在该文件已有的内容后面追加内容
LOCK_EX=>写文件的时候先锁定,防止多人同时写入造成内容丢失
  
摘自:http://www.wyxuan.com/184.html  


————————————————————————————————————————————————————————————————
PHP file_put_contents() 函数 写入txt文本函数:

定义和用法

file_put_contents() 函数把一个字符串写入文件中。

与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
语法

file_put_contents(file,data,mode,context)

参数   描述
file   必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data   可选。规定要写入文件的数据。可以是字符串、数组或数据流。
mode  

可选。规定如何打开/写入文件。可能的值:

    FILE_USE_INCLUDE_PATH
    FILE_APPEND
    LOCK_EX

context  

可选。规定文件句柄的环境。

context 是一套可以修改流的行为的选项。若使用 null,则忽略。
说明

参数 data 可以是数组(但不能是多维数组)。

自 PHP 5.1.0 起,data 参数也可以被指定为 stream 资源,stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。

对 context 参数的支持是 PHP 5.0.0 添加的。
返回值

该函数将返回写入到文件内数据的字节数。
提示和注释

提示:使用 FILE_APPEND 可避免删除文件中已有的内容。

注释:本函数可安全用于二进制对象。
例子

<?php
echo file_put_contents("test.txt","Hello World. Testing!");
?>
输出:
26

说明
参数 data 可以是数组(但不能是多维数组)。

自 PHP 5.1.0 起,data 参数也可以被指定为 stream 资源,stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。

对 context 参数的支持是 PHP 5.0.0 添加的。
返回值

该函数将返回写入到文件内数据的字节数。
提示和注释

提示:使用 FILE_APPEND 可避免删除文件中已有的内容。

注释:本函数可安全用于二进制对象。
来自:http://blog.sina.com.cn/s/blog_88441e630100tj60.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/1334/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2016-2-25 10:33
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]