PHP前置到文件内容中

时间:2014-08-11 16:11:57

标签: php fopen

我已经看过这个问题,但它对我没有帮助 How do I prepend file to beginning??

我已将此消息附加到文件的末尾:

if ( ! $fp = @fopen($filepath, 'ab'))
{
    return FALSE;
}

$message .= $level.' - '.date($this->_date_fmt).' --> '.print_r($msg, TRUE)."\n";
if($this->_add_location){
    foreach (array_reverse(debug_backtrace()) as $key => $step) {
        $message .= '    # '.($key+1).' Line: '.$step['line'].' File: '.$step['file'];
        if(isset($step['function']) && $step['function']==$this->_func_call) $message .= " ---> Call\n";
        else $message .= "\n";
    }
    $message .= "\n";
}


flock($fp, LOCK_EX);

for ($written = 0, $length = strlen($message); $written < $length; $written += $result)
{
    if (($result = fwrite($fp, substr($message, $written))) === FALSE)
    {
        break;
    }
}

flock($fp, LOCK_UN);
fclose($fp);

我想知道的是,是否有一种方法可以通过将写入模式ab更改为其他值来预先添加信息,还是必须重写整个脚本才能执行此操作?

1 个答案:

答案 0 :(得分:0)

我不知道这个解决方案是否是最好的,但对于大型文件来说可能相当快。

  1. 将文件重命名为临时名称。
  2. 使用预先挂起的内容在其位置创建一个新文件。
  3. 将临时文件中的原始内容附加到替换文件。
  4. 删除临时文件。
  5. 我不确定这是一个很好的答案,所以我四处搜寻,发现其他人提供了相同的解决方案。

    PHP when writing to file, How to prepend and append text to a file with existing text?