写入超大数据到文件,非常容易碰到这个问题,用 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条评论