在Thinkphp6.0中在根目录下创建文件,并写入内容,并且不读出原内容,直接在最后一行写上(记录日志文件)

public function writeLog($data,$type)
    {
        var_dump($data);
        // 获取项目根目录路径
        $rootPath = app()->getRootPath();
        if ($type == 1){
            // 指定文件名和要写入的内容
            $fileName = substr($data,5,7).'.txt';
            echo $fileName.PHP_EOL;
            // 拼接文件路径
            $filePath = $rootPath . "/log/mod/" . $fileName;
            // 判断文件是否存在
            if (file_exists($filePath)) {
                if ($handle = fopen($filePath, 'a+')) {
                    // 使用文件锁以确保同一时间只有一个进程写入
                    flock($handle, LOCK_EX);

                    // 移动文件指针到文件末尾
                    fseek($handle, 0, SEEK_END);

                    // 获取最后一行内容
                    $lastLine = '';
                    if ($handle && ftell($handle) > 0) {
                        while (($char = fgetc($handle)) !== false && $char !== "\n"){
                            $lastLine .= $char;
                        }

                        // 添加换行符
                        if ($lastLine !== '') {
                            $lastLine .= "\n";
                        }
                    }

                    // 追加新内容
                    fwrite($handle, $lastLine ."\n". $data);

                    // 释放文件锁
                    flock($handle, LOCK_UN);

                    // 关闭文件句柄
                    fclose($handle);

                    echo "内容已成功追加到文件末尾。";
                } else {
                    echo "无法打开文件进行写入。";
                }
            } else {
                if ($handle = fopen($filePath, 'w')) {
                    fwrite($handle, $data);
                    fclose($handle);
                    echo "文件已成功创建,并写入内容。";
                } else {
                    echo "无法创建文件或写入内容。";
                }
            }
        }elseif ($type == 2){
            // 指定文件名和要写入的内容
            $fileName = substr($data,17,5).'.txt';
            echo $fileName.PHP_EOL;
            // 拼接文件路径
            $filePath = $rootPath . "/log/user/" . $fileName;
            // 判断文件是否存在
            if (file_exists($filePath)) {
                if ($handle = fopen($filePath, 'a+')) {
                    // 使用文件锁以确保同一时间只有一个进程写入
                    flock($handle, LOCK_EX);

                    // 移动文件指针到文件末尾
                    fseek($handle, 0, SEEK_END);

                    // 获取最后一行内容
                    $lastLine = '';
                    if ($handle && ftell($handle) > 0) {
                        while (($char = fgetc($handle)) !== false && $char !== "\n"){
                            $lastLine .= $char;
                        }

                        // 添加换行符
                        if ($lastLine !== '') {
                            $lastLine .= "\n";
                        }
                    }

                    // 追加新内容
                    fwrite($handle, $lastLine ."\n". $data);

                    // 释放文件锁
                    flock($handle, LOCK_UN);

                    // 关闭文件句柄
                    fclose($handle);

                    echo "内容已成功追加到文件末尾。";
                } else {
                    echo "无法打开文件进行写入。";
                }
            } else {
                if ($handle = fopen($filePath, 'w')) {
                    fwrite($handle, $data);
                    fclose($handle);
                    echo "文件已成功创建,并写入内容。";
                } else {
                    echo "无法创建文件或写入内容。";
                }
            }
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值