操纵一个长度为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一次读取一行文件。
- 3 回答
- 0 关注
- 321 浏览
添加回答
举报
0/150
提交
取消