如何使用 file_put_contents() 将数据追加到文件?

问题描述 投票:0回答:2

我有一个 Android 应用程序,它使用

okhttp3
发送多个数据记录,但我找不到一种方法来记录 all 在 PHP 中接收的数据。我当前的日志仅显示最后一条记录(见下文)。我最好的猜测是 PHP 文件被每条新记录覆盖,只留下最后一条。

如何在 PHP 中记录 Android 应用程序发送的所有数据?

是的,所有数据都从 Android 应用程序正确发送。

index.php

if (isset($_POST)) {
    file_put_contents("post.log", print_r($_POST, true));
}

样品
post.log

Array
(
    [date] => 02 Aug, 12:22
    [company] => Assert Ventures
    [lattitude] => 32.8937542
    [longitude] => -108.336584
    [user_id] => Malboro
    [photo_id] => 1
)

我想要什么:

我希望日志保留从应用程序发送的所有记录,而不仅仅是最后一个。像这样的东西:

(
    [date] => 02 Aug, 12:22
    [company] => Three Ventures
    [lattitude] => 302.8937542
    [longitude] => -55.336584
    [user_id] => Malboro
    [photo_id] => 1
),
(
    [date] => 02 Aug, 12:22
    [company] => Two Ventures
    [lattitude] => 153.8937542
    [longitude] => -88.336584
    [user_id] => Malboro
    [photo_id] => 1
),
(
    [date] => 02 Aug, 12:22
    [company] => Assert Ventures
    [lattitude] => 32.8937542
    [longitude] => -108.336584
    [user_id] => Malboro
    [photo_id] => 1
)
php file append
2个回答
36
投票

需要传递第三个参数

FILE_APPEND
;

所以你的 PHP 代码看起来像这样,

if (isset($_POST))
 {
file_put_contents("post.log",print_r($_POST,true),FILE_APPEND);
}

FILE_APPEND 标志有助于将内容附加到文件的末尾 文件而不是覆盖内容。


11
投票

我认为你应该添加 FILE_APPEND 标志。

<?php
$file = 'post.log';
// Add data to the file
$addData = print_r($_POST,true);
// Write the contents to the file, 
// using the FILE_APPEND flag to append the content to the end of the file
// and the LOCK_EX flag to prevent anyone else writing to the file at the same time
file_put_contents($file, $addData, FILE_APPEND | LOCK_EX);
?>
© www.soinside.com 2019 - 2024. All rights reserved.