原创PHP 写入超大字符串到文件

4 0 0
大乐文章
发表于3年前

写入超大数据到文件,非常容易碰到这个问题,用 file_put_contents() 写入的问题:

PHP Fatal error: Allowed memory size of 524288000 bytes exhausted

内存占用溢出了,这是无法避免的,在网上找了很久也没找到这个类型的,所以才写了个下面的方法专用于写入超大字符串.


/**
 * 写入超大字符到指定文件
 * @param   string   $filename  需要写入的文件路径,例如:/tmp/1.json
 * @param   string   $data      需要写入的数据,必须是字符串,如果是数组则转换为json再写入
 * @param   int      $len       默认每次写入块的大小,默认1024个长度
 * @return  int      最终写入了多少个字符
 * @author  大乐文章 www_dale6_com@163.com
 */
function file_put_contents_max($filename, $data, $len = 1024)
{
    $fp = fopen($filename, 'wb');
    $start = 0;
    $cd = strlen($data);
    while ($start != $cd) {
        $tcd = substr($data, $start, $len + $start > $cd ? $cd - $start : $len);
        $start += fwrite($fp, $tcd);
    }
    fclose($fp);
    return $start;
}

本站的所有数据收集于网络如有侵犯到您的权益请联系 admin@dale6.com 进行下架处理。提供的内容仅用于学习和测试,不保证内容的正确性。通过使用本站内容随之而来的风险与本站无关。

转载时必须带上转载链接或本文链接!

本文链接: https://www.dale6.com/2021/03/26/phpxieruchaodazifuchuandaowenjian/

0
最后修改:3年前
0条评论

留下你的评论

必须 登录 才能发表评论

Copyright © 2023 大乐文章 · 基于 WordPress · 使用大乐主题 · 鄂ICP备20005751号-1 · 备案图标鄂公网安备 42011202001820号