Avatar ·

如何在PHP中高效逐行读取大文件而不耗尽内存?

大家好!我是一名PHP初学者,在处理大文件时遇到了问题。我有一个大约200MB的CSV文件,需要逐行处理。起初我尝试使用file_get_contents()和explode()按换行符分割,但脚本报错“Allowed memory size exhausted”。这是我的代码:\n\n```php\n$data = file_get_contents('big_file.csv');\n$lines = explode("\\n", $data);\nforeach ($lines as $line) {\n // 处理行\n echo $line . "\\n";\n}\n```\n\n我明白file_get_contents()会将整个文件加载到内存中,从而导致问题。但如何正确逐行读取文件呢?我听说过fopen()和fgets(),但不确定如何正确用于大文件。另外,如何处理大于1GB的文件——有没有什么陷阱?能否优化读取以避免浪费内存?提前感谢帮助!\n<<>>\n

使用fopen()和fgets()