php file_put_contents解决高并发情况下文件写入的问题

时间:2016-09-02
php file_put_contents函数用于向文件中写入或追加内容,但是如果在并发情况下就会出问题,本文章向大家介绍如何解决 file_put_contents并发情况下文件写入的问题,需要的朋友可以参考一下。

我们先来看一下file_put_contents的语法及参数,下面是php手册上对file_put_contents的解释

int file_put_contents ( string $filename , string $data [, int $flags [, resource $context ]] )

参数:
filename
要被写入数据的文件名。

data
要写入的数据。类型可以是 string,array 或者是 stream 资源(如上面所说的那样)。

flags
flags 可以是 FILE_USE_INCLUDE_PATH,FILE_APPEND 和/或 LOCK_EX(获得一个独占锁定),然而使用 FILE_USE_INCLUDE_PATH 时要特别谨慎。

context
一个 context 资源。

要实现file_put_contents高并发写入文件,需要使用到第三个参数flags,flags参数为LOCK_EX即可在高并发时获得一个独占锁定。 请看下面实例代码:

<?php
$contents = file_get_contents('pickles.txt');
$contents = strtoupper($contents);
/*  http://www.manongjc.com/article/1433.html */
file_put_contents('pickles.txt', $contents, FILE_APPEND | LOCK_EX);
?>