为了账号安全,请及时绑定邮箱和手机立即绑定

操纵一个长度为3000万个字符的字符串

操纵一个长度为3000万个字符的字符串

PHP
月关宝盒 2019-08-28 09:56:11
操纵一个长度为3000万个字符的字符串我从其他服务器下载CSV文件作为来自供应商的数据馈送。我使用curl获取文件的内容并将其保存到一个名为的变量中$contents。我可以很好地达到那个部分,但我尝试使用爆炸\r并\n获得一个行数组,但它失败并出现“内存不足”错误。我echo strlen($contents)和它大约有3050万个字符。我需要操纵值并将它们插入到数据库中。我需要做些什么来避免内存分配错误?
查看完整描述

3 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

PHP正在窒息,因为它耗尽了内存。不要让curl使用文件内容填充PHP变量,而是使用


CURLOPT_FILE

将文件保存到磁盘的选项。


//pseudo, untested code to give you the idea


$fp = fopen('path/to/save/file', 'w');

curl_setopt($ch, CURLOPT_FILE, $fp);

curl_exec ($ch);

curl_close ($ch);

fclose($fp);

然后,一旦保存文件,而不是使用file或file_get_contents函数(将整个文件加载到内存中,再次杀死PHP),使用fopen和fgets一次读取一行文件。


查看完整回答
反对 回复 2019-08-28
  • 3 回答
  • 0 关注
  • 321 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信