PHP写入内容到文件(写日记)

一直没有在意PHP些入文件内容的功能,今天小结下.

file_put_contents()

字符串写入文件,成功返回写入到文件内数据的字节数,失败返回false

file_put_contents(filename, string data, mode, context)

filename:必须,要写入的文件名,文件不存在则自动新建文件.

data:可选,要写入的数据,可以是 字符串,数组(但不能是多维数组)或者数据流.

mode:可选,规定如何打开/写入文件,FILE_USE_INCLUDE_PATH(检查 filename 副本的内置路径),FILE_APPEND(追加写入),LOCK_EX(对文件上锁)

context:可选,规定文件句柄的环境,可以通过它修改文本属性

PHP_EOL

很多时候记录日志需要换行,在windows中\r\n是换行,在Mac中\r是换行,在Liunx中\n是换行.

PHP常量->换行

file_put_contents("log.txt", "Hello world everyone.".PHP_EOL, FILE_APPEND);

逐行读取txt :

$lines=file("1.txt");
foreach ($lines as $value) {
	$line = explode(",",$value);
	echo "n1:$line[0]--n2:$line[1]---time:$line[2]-<br>";
}

fwrite()

fwrite(filename,string,length) 返回写入的字符数,否则返回 FALSE

$filename = '1.txt';
$word = "你好!".PHP_EOL;

// 确定文件存在并且可写
if (is_writable($filename)) {
    //打开文件
    if (!$fh = fopen($filename, 'a')) {
         echo "不能打开文件 $filename";
         exit;
    }
    // 写入内容
    if (fwrite($fh, $word) === FALSE) {
        echo "不能写入到文件 $filename";
        exit;
    }
    echo "成功地将 $word 写入到文件 $filename";
    fclose($fh);
} else {
    echo "文件 $filename 不可写";
}

参考两个的性能测试:如下

-http://www.jb51.net/article/40262.htm

如果要往文件里面写入大量的数据,则推荐用fwrite,不要用file_put_contents。在高并发的请求中也建议用fwrite。

/**
 * 日记文件 用于记录数据或者对比交互的数据
 * @param      $data 任意数据类型
 * @param      $desc 描述
 */
function record($data, $desc = null)
{
    $c = request()->controller();
    $a = request()->action();

    $string = PHP_EOL."<--------- ".$c.'/'.$a.' -- '.date("Y-m-d H:i:s", time())." --------->"
        .PHP_EOL.var_export($data,TRUE)
        .PHP_EOL."<---------- ".'↑↑↑描述↑↑↑: '. $desc." --------->".PHP_EOL.PHP_EOL;

    file_put_contents("anbaolog.txt", $string, FILE_APPEND);
}



导航