我正在从另一台服务器下载CSV文件,作为供应商的数据提要。
我正在使用curl获取文件的内容,并将其保存到名为的变量中$contents。
$contents
我可以很好地达到那部分,但是我尝试通过爆炸\r并\n获得行数组,但是失败并出现“内存不足”错误。
\r
\n
我echo strlen($contents),大约是3050万个字符。
echo strlen($contents)
我需要处理这些值并将它们插入数据库。为了避免内存分配错误,我该怎么办?
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);
然后,保存文件后,不要使用fileor file_get_contents函数(将整个文件加载到内存中,再次杀死PHP),请使用fopen和fgets一次读取一行。
file
file_get_contents
fopen